Contenu | Rechercher | Menus

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Both sides previous revision Révision précédente
Prochaine révision
Révision précédente
vsftpd [Le 18/06/2014, 20:52]
78.208.224.4 [Parade contre le bogue de la version 2.3.5]
vsftpd [Le 15/07/2015, 14:00] (Version actuelle)
86.214.194.254 [500 OOPS: vsftpd: refusing to run with writable root inside chroot()]
Ligne 61: Ligne 61:
  
 La configuration de VsFTPd est centralisée dans un seul et même fichier **/​etc/​vsftpd.conf**. Choisissez [[:​tutoriel:​comment_editer_un_fichier|votre éditeur de texte favori]] (en mode [[:​sudo|super utilisateur]]) et appliquez les modifications suivantes en fonction du mode de fonctionnement de VsFTPd. La configuration de VsFTPd est centralisée dans un seul et même fichier **/​etc/​vsftpd.conf**. Choisissez [[:​tutoriel:​comment_editer_un_fichier|votre éditeur de texte favori]] (en mode [[:​sudo|super utilisateur]]) et appliquez les modifications suivantes en fonction du mode de fonctionnement de VsFTPd.
- 
-**La version 2.3.5 livrée en standard avec Ubuntu est boguée**.\\ 
-L'​utilisation du mode "​prison"​ provoque une erreur : //500 OOPS: vsftpd: refusing to run with writable root inside chroot()//​\\ 
-L'​utilisateur ne peut pas accéder à son répertoire personnel. Une [[#​parade_contre_le_bug_de_la_version_235|"​parade"​]] est décrite plus bas en attendant que la version 3.x soit présente dans les dépôts. 
  
 ==== Configuration de base ==== ==== Configuration de base ====
Ligne 101: Ligne 97:
 Il faut ensuite modifier la configuration générale (/​etc/​vsftpd.conf) et ajouter ces lignes: Il faut ensuite modifier la configuration générale (/​etc/​vsftpd.conf) et ajouter ces lignes:
  
-  chroot_local_user=NO+  chroot_local_user=YES
   chroot_list_enable=YES   chroot_list_enable=YES
   ​   ​
   chroot_list_file=/​etc/​vsftpd/​chroot.list   chroot_list_file=/​etc/​vsftpd/​chroot.list
  
-<note important>​Attention,​ si chroot_local_user ​est à YES, cette liste devient la liste des utilisateurs qui ne seront PAS dans leur "​prison"​ </​note>​+<note important>​Attention,​ si chroot_list_enable ​est à NO, cette liste devient la liste des utilisateurs qui ne seront PAS dans leur "​prison"​ </​note>​
  
 ==== Configuration avancée ==== ==== Configuration avancée ====
Ligne 114: Ligne 110:
   listen_port=222   listen_port=222
  
-  * Pour avoir un monitoring  ​basic (voir les utilisateurs connectés) :+  * Pour avoir un monitoring  ​basique ​(voir les utilisateurs connectés) :
  
    ​setproctitle_enable=YES    ​setproctitle_enable=YES
  
- ​Ensuite,​ pour voir la des utilisateurs il suffit de taper la commande suivante dans un terminal :+ ​Ensuite,​ pour voir la liste des utilisateurs il suffit de taper la commande suivante dans un terminal :
  
    ps -aef | grep vsftpd    ps -aef | grep vsftpd
Ligne 151: Ligne 147:
  
  
-==== "​Parade"​ contre le bogue de la version 2.3.5 ==== 
  
-===NOUVELLE METHODE=== 
-<note warning>​**Note du Mercredi 18 Juin 2014 :** le PPA est indisponible (erreur 404) et donc impossible d'​effectuer cette nouvelle méthode.</​note>​ 
-Pour contourner le bug, quelqu'​un a réalisé un backport de l'​option allow_writeable_chroot depuis vsftpd 3 
- 
-Ajouter l'​option //​allow_writeable_chroot=YES//​ dans vsftpd.conf,​ puis : 
- 
-<​code>​ 
-sudo apt-get install python-software-properties 
-sudo add-apt-repository ppa:​thefrontiergroup/​vsftpd 
-sudo apt-get update 
-sudo apt-get install vsftpd ​ 
-</​code>​ 
- 
- 
----- 
-===AUTRE METHODE=== 
- 
-  * Dans chaque répertoire utilisateur,​ on crée un répertoire "​FTP"​ appartenant à '​root'​ sur lequel on enlève les droits d'​écriture. 
- 
-  sudo mkdir /​home/<​Utilisateur>/​FTP 
-  sudo chmod 555 /​home/<​Utilisateur>/​FTP 
- 
-On crée ensuite un point de montage à l'​intérieur qui appartient à l'​utilisateur 
- 
-  sudo mkdir /​home/<​Utilisateur>/​FTP/​homedir 
-  sudo chown <​Utilisateur>:<​Utilisateur> ​ /​home/<​Utilisateur>/​FTP/​homedir 
- 
-Et on monte en mode '​bind'​ le répertoire réel dans ce répertoire. 
- 
-  mount --bind ​ /​home/<​Utilisateur> ​ /​home/<​Utilisateur>/​FTP/​homedir 
- 
-Répétez ces opération pour chaque utilisateur "​emprisonné"​ 
- 
-On va maintenant préciser à vsftpd, les chemins exacts où l'​utilisateur doit arriver. Pour cela, en plus du fichier liste, on crée un répertoire contenant un fichier par utilisateur 
- 
-  sudo mkdir /​etc/​vsftpd/​users 
-  gksu gedit /​etc/​vsftpd/​users/​utilisateur_1 
- 
-Dans ce fichier, on précise le chemin FTP avec cette syntaxe: 
- 
-  local_root=/​home/​utilisateur_1/​FTP 
- 
-Si tout vos utilisateurs sont emprisonnés,​ vous pouvez utiliser cette commande qui va créer tous les fichiers du répertoire "​users":​ 
- 
-  sudo -s 
-  for h in `ls -1 /home`; do   if [ ! -f /​etc/​vsftpd/​users/​$h ]; then echo local_root=/​home/​$h/​FTP >/​etc/​vsftpd/​users/​$h;​ fi; done 
-  exit 
- 
-On va signaler à vsftpd que l'on utilise un répertoire de gestion des utilisateurs dans son fichier de configuration (/​etc/​vsftpd.conf) 
- 
-  user_config_dir=/​etc/​vsftpd/​users/​ 
-  ​ 
-Lorsque l'​utilisateur va se connecter en FTP, il n'y aura pas d'​erreur puisque le répertoire FTP est en lecture seule et il se retrouvera face à un répertoire ne contenant que sa "​homedir"​. 
- 
-  * Automatisation au démarrage 
- 
-Ajoutez ces lignes au fichier **/​etc/​rc.local** au dessus de la ligne contenant "​exit":​ 
- 
-<​code>#​ mount en bind pour bogue vsftpd 2.3.5 
-for h in `ls -1 /home`; 
-do 
-  if [ ! -d /​home/​$h/​FTP ]; then mkdir /​home/​$h/​FTP;​fi 
-  chmod 555 /​home/​$h/​FTP 
-  if [ ! -d /​home/​$h/​FTP/​homedir ]; then mkdir /​home/​$h/​FTP/​homedir;​fi 
-  chown $h:$h /​home/​$h/​FTP/​homedir 
-  mount --bind /home/$h/ /​home/​$h/​FTP/​homedir ​ 
-done 
-</​code>​ 
 ===== vsftpd et SSL ===== ===== vsftpd et SSL =====
  
Ligne 603: Ligne 530:
  
 //​Contributeur : [[utilisateurs:​ju]],​ [[utilisateurs:​sginer]],​ Yoann Vareille, [[utilisateurs:​snoopy_p]],​ [[utilisateurs:​capripot]],​ [[utilisateurs:​kujakuchan]],​ [[utilisateurs:​kwakpiper]],​ [[utilisateurs:​McPeter]]//​ //​Contributeur : [[utilisateurs:​ju]],​ [[utilisateurs:​sginer]],​ Yoann Vareille, [[utilisateurs:​snoopy_p]],​ [[utilisateurs:​capripot]],​ [[utilisateurs:​kujakuchan]],​ [[utilisateurs:​kwakpiper]],​ [[utilisateurs:​McPeter]]//​
 +
 +===== Problèmes courants =====
 +
 +==== 500 OOPS: vsftpd: refusing to run with writable root inside chroot() ====
 +
 +La version 2.3.5 de vsftpd contient une sécurité qui empêche l'​utilisation du mode « prison » avec accès en écriture dans le dossier racine, d'où l'​erreur « //500 OOPS: vsftpd: refusing to run with writable root inside chroot()//​ ».
 +
 +La solution la plus simple consiste à supprimer l'​accès en écriture du répertoire racine, et à ajouter un sous-répertoire avec accès en écriture.
 +
 +Ainsi, pour la configuration proposée plus haut pour les utilisateurs virtuels, il suffit d'​avoir les répertoires suivants :
 +
 +  $ ls -ld /​chemin_du_dossier
 +  dr-xr-xr-x 3 ftp ftp 4096 févr. ​ 3 11:45 /​chemin_du_dossier
 +
 +  $ ls -ld /​chemin_du_dossier/​sous-dossier
 +  drwxr-xr-x 2 ftp ftp 4096 févr. ​ 3 13:03 /​chemin_du_dossier/​sous-dossier
 +
 +Les utilisateurs ne peuvent pas écrire dans le dossier racine /​chemin_du_dossier (erreur « //553 Could not create file.//​ »),​ mais peuvent écrire dans le sous-dossier.
 +
 +Sinon en mieux...
 +
 +Télécharger la mise à jour de Vsftpd...
 +
 +  $ wget http://​ftp.cyconet.org/​debian/​pool/​main/​v/​vsftpd/​vsftpd_2.3.5-10~update.1_amd64.deb
 +
 +Mettre à jour...
 +
 +  $ dpkg -i vsftpd_2.3.5-10~update.1_amd64.deb
 +
 +Puis ajouter dans le fichier /​etc/​vsftpd.conf "​allow_writeable_chroot=YES"​
 +
 +et redémarrer Vsftpd
 +
 +  $ service vsftpd restart


Le contenu de ce wiki est sous licence : CC BY-SA v3.0