Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
vsftpd [Le 25/05/2014, 03:29] 85.171.75.79 [Script pour automatiser la création/suppression d'utilisateurs virtuels] |
vsftpd [Le 15/07/2015, 14:00] 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=== | ||
- | |||
- | 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 |