VSFTPD: configurer son serveur FTP avec des utilisateurs virtuels
J’ai déjà publié un article en anglais sur l’installation et la configuration de vsftpd. L’article est orienté serveur web, c’est-à-dire qu’on prend l’exemple d’un utilisateur qui se connect à son dossier /var/www/user1. Dans l’article qui suit je prend l’exemple d’un serveur personnel de données.
Nous allons donc:
- Créer des utilisateurs
- Leur donner accès à seulement un dossier
- Ajouter virtuellement des dossiers dans ce dossier (mount –bind)
- Créer un super utilisateur afin de laisser l’accès à tout le serveur
1. Installer vsftpd (Very Secure FTP Deamon) et libpam-pwdfile pour gérer les utilisateur
Je souhaite créer des utilisateurs pour se connecter au serveur (pour donner un accès à mes amis) mais je ne souhaite pas créer d’utilisateur local. On installe donc un module PAM (Pluggable Authentification Modules).
sudo apt-get install vsftpd libpam-pwdfile |
2. Configurer vsftpd: /etc/vsftpd.conf
On copie le fichier de config. original (au cas ou)
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak |
Et on en crée un nouveau
sudo vim /etc/vsftpd.conf |
Copier ensuite ces lignes de configuration. Le fichier ne devrait contenir que ces lignes.
listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 nopriv_user=vsftpd virtual_use_local_privs=YES guest_enable=YES user_sub_token=$USER local_root=/srv/ftp/public chroot_local_user=YES hide_ids=YES guest_username=vsftpd |
3. Créer des utilisateurs virtuels
Nous avons ici besoin de l’outil HTPASSWD qui vient apparament avec Apache2. Je l’ai déjà installé et configuré donc je n’ai pas eu de problème. On va considérer que vous l’avez aussi.
On créé un fichier pour y mettre nos utilisateurs
sudo mkdir /etc/vsftpd |
Puis on créé un premier utilisateur. La commande vous demande ensuite de taper le mot de passe dans le terminal.
sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1 |
- -c signifie que le fichier ftpd.passwd va etre créé (à utiliser seulement au premier utilisateur donc)
- -d signifie qu’on veut forcer MD5. Sur ubuntu 12.04 vous deviez être obligé de l’utiliser
Pour créer un nouvel utilisateur par la suite
sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2 |
4. Configurer PAM: /etc/pam.d/vsftpd
On copie le fichier d’origine
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak |
et crée un nouveau
vim /etc/pam.d/vsftpd |
On copie-colle ces 2 lignes:
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd account required pam_permit.so |
5. Créer un utilisateur local sans shell
On nomme notre utilisateur ‘vsftpd’. Lorsqu’un utilisateur virtuel se connect, Ubuntu va utiliser ce nouvel utilisateur ‘vsftpd’ pour ses droits d’accès et de possession: chown et chmod.
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd |
6. Redémarrer VSFTPD
On utilise les services:
sudo service vsftpd restart |
Si vous utilisé ubuntu 10.04:
/etc/init.d/vsftpd restart |
7. Configurer le dossier /srv/ftp/public
Tout les utilisateurs vont être placé dans le dossier /srv/ftp/public/. On doit créer ce dossier et lui attribuer les bons droits d’accès: il ne doit pas être accessible en écriture!
Dans notre configuration on a précisé chroot_local_user=YES, cela signifie que l’utilsateur vera le dossier /srv/ftp/public comme le dossier racine /. Il ne verra aucun autre dossier.
Pour l’exemple on créé un dossier comme suit:

Le dossier public étant protégé en écriture il faut créer tous les dossiers en tant que root.
sudo mkdir /srv/ftp/public/Documents sudo mkdir /srv/ftp/public/Photos sudo mkdir /srv/ftp/public/Videos sudo mkdir /srv/ftp/public/TEMP |
sudo chown -R vsftpd:ftpusers /srv/ftp/public/* |
sudo chmod 755 /srv/ftp/public/Documents sudo chmod 555 /srv/ftp/public/Videos sudo chmod 555 /srv/ftp/public/Photos sudo chmod 777 /srv/ftp/public/TEMP |
mount –bind /home/julien/Dossier_cool /srv/ftp/public/Dossier_cool
Il reste ensuite à régler les droits d’accès.
8. Créer un accès Admin sur tout le serveur
On enregistre un nouvel utilisateur nommé ‘theadmin’.
sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin |
Il faut ensuite ajouter un ligne dans /etc/vsftpd.conf
chroot_list_enable=YES |
Cela signifie que tous les utilisateurs virtuels seront placé en prison dans leur dossier /srv/ftp/public SAUF ceux dont le nom est contenu dans le fichier /etc/vsftpd.chroot_list
On crée donc ce fichier en y ajoutant une seule ligne contenant le nom de l’utilisateur admin: ‘theadmin’. Pour en ajouter plusieurs il faut ajouter un utilisateur par ligne. Lors de sa connexion l’admin est placé dans le dossier /home/vsftpd.
Partagez et abonnez-vous
Twitter
Facebook
Email
Abonnez-vous
Suivez moi






mars 21st, 2013 at 12:02
Bonjour,
la config fonctionne très bien. merci pour le tuto. Par contre est-il possible de définir un répertoire pour un utilisateur virtuel précis.
merci
avril 16th, 2013 at 8:42
Bonjour,
J’aurais la mm question que Remi,car Mes utilisateur virtuel quand ils ce connectent sur le serveur ftp (vsftpd) il sont tous dan le mm répertoire /srv/ftp/
Alors que mon deamon « muftp » a pour répertoire racine /home/serveur_ftp/
J’uitilise vsftpd version 2.3.5 sur linux 12.04
Merci d’avance.