Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tutoriel:vsftpd_multi-utilisateurs_multi-dossiers_avec_db_ou_mysql [Le 24/09/2012, 16:47] – [Un simple fichier DB (Berkeley db) pour vos utilisateurs] ChesterKiK | tutoriel:vsftpd_multi-utilisateurs_multi-dossiers_avec_db_ou_mysql [Le 12/07/2026, 09:20] (Version actuelle) – suppr tag unique krodelabestiole | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | |||
| ====== VSFTPD multi-utilisateurs multi-dossiers avec DB ou MYSQL. ====== | ====== VSFTPD multi-utilisateurs multi-dossiers avec DB ou MYSQL. ====== | ||
| - | |||
| vsftpd est un deamon FTP très léger, rapide et sécurisé. | vsftpd est un deamon FTP très léger, rapide et sécurisé. | ||
| Ligne 10: | Ligne 11: | ||
| Ce tuto suppose que avez un minimum de connaissance en ligne de commande, mais il est suffisamment détaillé pour un débutant. | Ce tuto suppose que avez un minimum de connaissance en ligne de commande, mais il est suffisamment détaillé pour un débutant. | ||
| - | Il a été réalisé sous Ubuntu 12.04, mais peu s' | + | Il a été réalisé sous Ubuntu 12.04, mais peut s' |
| Pour réaliser cette installation, | Pour réaliser cette installation, | ||
| - | |||
| ===== Pré-requis ===== | ===== Pré-requis ===== | ||
| Ligne 19: | Ligne 19: | ||
| * Disposer des droits d' | * Disposer des droits d' | ||
| * Savoir utiliser un terminal | * Savoir utiliser un terminal | ||
| - | * Avoir installé le paquet vsftpd | + | * Avoir installé le paquet vsftpd |
| - | Commencez par ouvrir votre fenêtre de terminal (ctrl-alt-t) | + | Commencez par ouvrir votre fenêtre de terminal (ctrl-alt-t) |
| Passez en utilisateur « root » pour éviter d' | Passez en utilisateur « root » pour éviter d' | ||
| < | < | ||
| Ligne 32: | Ligne 32: | ||
| </ | </ | ||
| - | ===== 2. CONFIGURATION | + | ===== Configuration |
| Commencez par créer un fichier de configuration pour vsftpd, si ce fichier existe déjà renommez le : | Commencez par créer un fichier de configuration pour vsftpd, si ce fichier existe déjà renommez le : | ||
| Ligne 48: | Ligne 48: | ||
| Insérez ce contenu (copier/ | Insérez ce contenu (copier/ | ||
| < | < | ||
| - | # ftp server | + | # ftp server |
| ##################### | ##################### | ||
| listen=YES | listen=YES | ||
| Ligne 85: | Ligne 85: | ||
| virtual_use_local_privs=YES | virtual_use_local_privs=YES | ||
| user_sub_token=$USER | user_sub_token=$USER | ||
| - | local_root=/ | + | local_root=/ |
| hide_ids=YES | hide_ids=YES | ||
| </ | </ | ||
| Ligne 95: | Ligne 95: | ||
| Le nom d' | Le nom d' | ||
| - | //cf. config :// | + | //cf. config :// |
| // | // | ||
| // | // | ||
| - | // | + | // |
| - | ===== UTILISATEURS | + | ===== UTILISATEURS |
| Les utilisateurs virtuels peuvent être gérés de plusieurs façons, je vous en propose deux : | Les utilisateurs virtuels peuvent être gérés de plusieurs façons, je vous en propose deux : | ||
| Ligne 111: | Ligne 111: | ||
| - | ==== Un simple fichier DB (Berkeley db) pour vos utilisateurs | + | ==== Un simple fichier DB (Berkeley db) ==== |
| Le principe est de créer les utilisateurs dans un fichier texte puis de le convertir au format DB. | Le principe est de créer les utilisateurs dans un fichier texte puis de le convertir au format DB. | ||
| Ligne 119: | Ligne 119: | ||
| touch / | touch / | ||
| </ | </ | ||
| - | Editez le fichier et définissez deux utilisateurs pour exemple | + | Editez le fichier et définissez deux utilisateurs pour exemple |
| < | < | ||
| nano / | nano / | ||
| Ligne 125: | Ligne 125: | ||
| Copiez/ | Copiez/ | ||
| < | < | ||
| - | user1 | + | user1 |
| 123456 | 123456 | ||
| user2 | user2 | ||
| Ligne 132: | Ligne 132: | ||
| <note important> | <note important> | ||
| - | Générez ensuite le fichier db dans / | + | Générez ensuite le fichier db dans / |
| < | < | ||
| db_load -T -t hash -f / | db_load -T -t hash -f / | ||
| Ligne 143: | Ligne 143: | ||
| Définissez la config de PAM pour l' | Définissez la config de PAM pour l' | ||
| - | //cf config : pam_service_name=vsftpd// | + | //cf config : pam_service_name=vsftpd// |
| < | < | ||
| touch / | touch / | ||
| Ligne 153: | Ligne 153: | ||
| Copiez/ | Copiez/ | ||
| < | < | ||
| - | auth required /lib/i386-linux-gnu/ | + | auth required /lib/x86_64-linux-gnu/ |
| - | account required /lib/i386-linux-gnu/ | + | account required /lib/x86_64-linux-gnu/ |
| </ | </ | ||
| Ligne 162: | Ligne 162: | ||
| - | ==== Une base mySQL pour vos utilisateurs | + | ==== Une base MySQL ==== |
| | | ||
| Pour créer la base de données vsftpd, il est nécessaire de connaître le mot de passe root (ici les étoiles) de votre installation de mysql ou celui d'un autre utilisateur ayant les droits de création. | Pour créer la base de données vsftpd, il est nécessaire de connaître le mot de passe root (ici les étoiles) de votre installation de mysql ou celui d'un autre utilisateur ayant les droits de création. | ||
| Nous utiliserons ici des mots de passe cryptés pour nos utilisateurs virtuels. | Nous utiliserons ici des mots de passe cryptés pour nos utilisateurs virtuels. | ||
| - | Création de la base de donnée de vsftpd : | + | Connexion au serveur MySQL |
| < | < | ||
| - | mysqladmin -u root --password=' | + | sudo mysql |
| </ | </ | ||
| + | (Ajoutez //-p// à cette commande si vous utilisez un mot de passe pour le compte //root//.) | ||
| - | Entrez ensuite | + | Vous entrez alors dans l' |
| - | <note important> | + | <note important> |
| < | < | ||
| - | mysql -u root --password=' | + | CREATE DATABASE vsftpd; |
| - | GRANT ALL PRIVILEGES | + | GRANT ALL ON vsftpd.* TO " |
| - | USE vsftpd; | + | USE vsftpd; |
| - | CREATE TABLE `utilisateurs` ( | + | CREATE TABLE `utilisateurs` ( |
| - | `username` varchar(64) NOT NULL default '', | + | `username` varchar(64) NOT NULL default '', |
| - | `password` varchar(64) NOT NULL default '', | + | `password` varchar(64) NOT NULL default '', |
| - | `quota` int(10) NOT NULL default ' | + | `quota` int(10) NOT NULL default ' |
| - | PRIMARY KEY (username) | + | PRIMARY KEY (username) |
| - | ) ENGINE=MyISAM COMMENT=' | + | ) ENGINE=MyISAM COMMENT=' |
| - | INSERT INTO `utilisateurs` (`username`, | + | INSERT INTO `utilisateurs` (`username`, |
| - | INSERT INTO `utilisateurs` (`username`, | + | INSERT INTO `utilisateurs` (`username`, |
| - | quit; | + | QUIT; |
| </ | </ | ||
| - | |||
| Il vous reste à créer le fichier pour l' | Il vous reste à créer le fichier pour l' | ||
| Créez le fichier / | Créez le fichier / | ||
| - | //cf config : pam_service_name=vsftpd// | + | //cf config : pam_service_name=vsftpd// |
| < | < | ||
| touch / | touch / | ||
| </ | </ | ||
| - | Éditez ce fichier : | + | Éditez ce fichier : |
| < | < | ||
| nano / | nano / | ||
| </ | </ | ||
| Copiez/ | Copiez/ | ||
| - | <note important> | + | <note important> |
| - | <code> | + | <file> |
| - | auth | + | auth |
| - | account | + | account |
| - | </code> | + | </file> |
| **Vos utilisateurs virtuels peuvent maintenant être authentifiés sans être créés comme des utilisateurs locaux.** | **Vos utilisateurs virtuels peuvent maintenant être authentifiés sans être créés comme des utilisateurs locaux.** | ||
| - | ===== Créer les dossiers | + | |
| + | ===== Dossiers | ||
| Nous définissons ici le dossier racine du FTP /ftpzone, mais vous devez l' | Nous définissons ici le dossier racine du FTP /ftpzone, mais vous devez l' | ||
| - | //cf. config : virtual_use_local_privs=YES ; user_sub_token=$USER ; local_root=/ | + | //cf. config : virtual_use_local_privs=YES ; user_sub_token=$USER ; local_root=/ |
| - | Pour fonctionner dans ce mode, vsftpd attend : | + | Pour fonctionner dans ce mode, vsftpd attend : |
| - | - un dossier racine (jail) pour chaque utilisateur sans droit d' | + | - un dossier racine (jail) pour chaque utilisateur sans droit d' |
| - un ou plusieurs sous-dossiers pour chaque utilisateur avec droit d' | - un ou plusieurs sous-dossiers pour chaque utilisateur avec droit d' | ||
| Ligne 225: | Ligne 226: | ||
| < | < | ||
| mkdir / | mkdir / | ||
| - | mkdir / | + | mkdir / |
| mkdir / | mkdir / | ||
| mkdir / | mkdir / | ||
| Ligne 232: | Ligne 233: | ||
| Définition les droits pour les dossiers des utilisateurs virtuels : | Définition les droits pour les dossiers des utilisateurs virtuels : | ||
| < | < | ||
| - | chmod 555 / | + | chmod 555 / |
| chmod 775 / | chmod 775 / | ||
| chmod 555 / | chmod 555 / | ||
| Ligne 251: | Ligne 252: | ||
| < | < | ||
| service vsftpd start | service vsftpd start | ||
| - | </code | + | </code> |
| Si le service est déjà démarré ou pour toutes modification de la configuration : | Si le service est déjà démarré ou pour toutes modification de la configuration : | ||
| < | < | ||
| service vsftpd restart | service vsftpd restart | ||
| </ | </ | ||
| - | < | + | < |
| Pour vérifier que le service est bien démarré et que la configuration est correcte, vérifiez les process (top) ou plus simplement redémarrez le service (restart) et s'il affiche « stop: Unknown instance » s'est qu'il n'a pas été lancé et que vous avez une erreur dans le fichier configuration.</ | Pour vérifier que le service est bien démarré et que la configuration est correcte, vérifiez les process (top) ou plus simplement redémarrez le service (restart) et s'il affiche « stop: Unknown instance » s'est qu'il n'a pas été lancé et que vous avez une erreur dans le fichier configuration.</ | ||
| Ligne 263: | Ligne 264: | ||
| **En gras ce que vous devez taper.** | **En gras ce que vous devez taper.** | ||
| - | **ftp 127.0.0.1 21** | + | **ftp 127.0.0.1 21** |
| - | Connected to 127.0.0.1. | + | Connected to 127.0.0.1. |
| - | 220 (vsFTPd 2.3.5) | + | 220 (vsFTPd 2.3.5) |
| Name (127.0.0.1: | Name (127.0.0.1: | ||
| - | 331 Please specify the password. | + | 331 Please specify the password. |
| Password: **123456** | Password: **123456** | ||
| - | 230 Login successful. | + | 230 Login successful. |
| - | Remote system type is UNIX. | + | Remote system type is UNIX. |
| - | Using binary mode to transfer files. | + | Using binary mode to transfer files. |
| - | ftp> **quit** | + | ftp> **quit** |
| - | 221 Goodbye. | + | 221 Goodbye. |
| - | Si la connexion s'est bien déroulée, passez maintenant au test avec votre client ftp favori - ex. Nautilus ou FileZilla | + | Si la connexion s'est bien déroulée, passez maintenant au test avec votre client ftp favori - ex. Nautilus ou FileZilla |
| < | < | ||
| - | ===== OPTION : | + | ===== OPTION : |
| Le but est de définir un utilisateur qui pourra accéder aux fichiers de tous les autres , et qui n'aura pas de dossier personnel. | Le but est de définir un utilisateur qui pourra accéder aux fichiers de tous les autres , et qui n'aura pas de dossier personnel. | ||
| - | <note important> | + | <note important> |
| Même si vsftpd permet de le faire, je vous déconseille ce type d' | Même si vsftpd permet de le faire, je vous déconseille ce type d' | ||
| - | Le fichier / | + | Le fichier / |
| - | //cf. config : chroot_list_enable=YES// | + | //cf. config : chroot_list_enable=YES// |
| Dé-commentez cette ligne dans la config : chroot_list_enable=YES | Dé-commentez cette ligne dans la config : chroot_list_enable=YES | ||
| Ligne 311: | Ligne 312: | ||
| nano / | nano / | ||
| </ | </ | ||
| - | Ajoutez les identifiants d' | + | Ajoutez les identifiants d' |
| Ligne 334: | Ligne 335: | ||
| </ | </ | ||
| Copiez/ | Copiez/ | ||
| - | <code> | + | <file> |
| - | #!/bin/sh | + | #!/bin/sh |
| - | ################################################################# | + | ################################################################# |
| - | # ajoute un utilisateur virtuel pour vsftpd | + | # ajoute un utilisateur virtuel pour vsftpd |
| - | ################################################################# | + | ################################################################# |
| - | if [ $# = " | + | if [ $# = " |
| - | # ajoute username et mot de passe au fichier texte des logins | + | # ajoute username et mot de passe au fichier texte des logins |
| - | echo $1" | + | echo $1" |
| - | # converti le fichier texte en DB | + | # converti le fichier texte en DB |
| - | db_load -T -t hash -f / | + | db_load -T -t hash -f / |
| - | # securise le fichier | + | # securise le fichier |
| - | chmod 600 / | + | chmod 600 / |
| - | # cree le dossier utilisateur | + | # cree le dossier utilisateur |
| - | mkdir /ftpzone/$1 | + | mkdir / |
| - | mkdir / | + | mkdir / |
| - | # defini les droits et le propriétaire des dossiers utilisateur | + | # defini les droits et le propriétaire des dossiers utilisateur |
| - | chmod 555 /ftpzone/$1 | + | chmod 555 / |
| - | chmod 775 / | + | chmod 775 / |
| - | chown -R vsftpd: | + | chown -R vsftpd: |
| - | # affiche le succés | + | # affiche le succés |
| - | echo " | + | echo " |
| - | else | + | else |
| - | echo "Deux arguments attendus (ex: addFTPuser username password)" | + | echo "Deux arguments attendus (ex: addFTPuser username password)" |
| - | fi | + | fi |
| - | </code> | + | </file> |
| Donnez le droit d' | Donnez le droit d' | ||
| < | < | ||
| Ligne 375: | Ligne 376: | ||
| - | Ici un script scripts d' | + | Ici un script scripts d' |
| < | < | ||
| touch / | touch / | ||
| Ligne 382: | Ligne 383: | ||
| Copiez/ | Copiez/ | ||
| <note important> | <note important> | ||
| - | <code> | + | <file> |
| - | #!/bin/sh | + | #!/bin/sh |
| - | ################################################################# | + | ################################################################# |
| - | # gestion des utilisateurs virtuels pour vsftpd // BY CHESTERKIK | + | # gestion des utilisateurs virtuels pour vsftpd // BY CHESTERKIK |
| - | ################################################################# | + | ################################################################# |
| - | if [ $# = " | + | if [ $# = " |
| - | # test si l' | + | # test si l' |
| - | r=$(echo "USE vsftpd; | + | r=$(echo "USE vsftpd; |
| - | if [ " | + | if [ " |
| - | # insert l' | + | # insert l' |
| - | echo "USE vsftpd; | + | echo "USE vsftpd; |
| - | # cree le dossier utilisateur | + | # cree le dossier utilisateur |
| - | mkdir /ftpzone/$2 | + | mkdir / |
| - | mkdir / | + | mkdir / |
| - | # defini les droits et le propriétaire des dossiers utilisateur | + | # defini les droits et le propriétaire des dossiers utilisateur |
| - | chmod 555 /ftpzone/$2 | + | chmod 555 / |
| - | chmod 775 / | + | chmod 775 / |
| - | chown -R vsftpd: | + | chown -R vsftpd: |
| - | # affiche le succés | + | # affiche le succés |
| - | echo " | + | echo " |
| - | else | + | else |
| - | echo " | + | echo " |
| - | fi | + | fi |
| - | elif [ $# = " | + | elif [ $# = " |
| - | # test si l' | + | # test si l' |
| - | r=$(echo "USE vsftpd; | + | r=$(echo "USE vsftpd; |
| - | if [ " | + | if [ " |
| - | echo " | + | echo " |
| - | else | + | else |
| - | echo " | + | echo " |
| - | echo -n "Vous êtes sur (o/N) ? " | + | echo -n "Vous êtes sur (o/N) ? " |
| - | read rr | + | read rr |
| - | if [ " | + | if [ " |
| - | # supprime l' | + | # supprime l' |
| - | echo "USE vsftpd; | + | echo "USE vsftpd; |
| - | # supprime les dossiers | + | # supprime les dossiers |
| - | rm -r /ftpzone/$2 | + | rm -r / |
| - | # affiche le succés | + | # affiche le succés |
| - | echo " | + | echo " |
| - | else | + | else |
| - | echo "Rien n'a été supprimé" | + | echo "Rien n'a été supprimé" |
| - | fi | + | fi |
| - | fi | + | fi |
| - | elif [ $# = " | + | elif [ $# = " |
| - | # test si l' | + | # test si l' |
| - | r=$(echo "USE vsftpd; | + | r=$(echo "USE vsftpd; |
| - | if [ " | + | if [ " |
| - | echo " | + | echo " |
| - | else | + | else |
| - | # modifie l' | + | # modifie l' |
| - | echo "USE vsftpd; | + | echo "USE vsftpd; |
| - | # affiche le succés | + | # affiche le succés |
| - | echo " | + | echo " |
| - | fi | + | fi |
| - | else | + | else |
| - | echo " | + | echo " |
| - | echo " > Ajout, tapez: FTPuser add username password" | + | echo " > Ajout, tapez: FTPuser add username password" |
| - | echo " > Suppression, | + | echo " > Suppression, |
| - | echo " > Changer le mot de passe, tapez: FTPuser change username password" | + | echo " > Changer le mot de passe, tapez: FTPuser change username password" |
| - | fi | + | fi |
| - | </code> | + | </file> |
| Donnez le droit d' | Donnez le droit d' | ||
| < | < | ||
| chmod 750 / | chmod 750 / | ||
| </ | </ | ||
| - | **exemple | + | |
| + | |||
| + | **Exemples | ||
| ajout d'un utilisateur | ajout d'un utilisateur | ||
| - | < | + | < |
| / | / | ||
| </ | </ | ||
| - | modification d'un mot de passe | + | modification d'un mot de passe |
| < | < | ||
| / | / | ||
| </ | </ | ||
| - | suppression d'un utilisateur | + | suppression d'un utilisateur |
| < | < | ||
| / | / | ||
| Ligne 469: | Ligne 473: | ||
| Si vous obtenez les messages suivants lors de la connexion d'un utilisateur virtuel : | Si vous obtenez les messages suivants lors de la connexion d'un utilisateur virtuel : | ||
| - | '' | + | < |
| Vous n'avez pas créé le dossier racine de l' | Vous n'avez pas créé le dossier racine de l' | ||
| - | '' | + | |
| - | Vous n'avez pas restreint les droits d' | + | < |
| + | Vous n'avez pas restreint les droits d' | ||
| + | |||
| + | ---- | ||
| Lors du redémarrage si vous constatez un message du type : | Lors du redémarrage si vous constatez un message du type : | ||
| - | '' | + | < |
| - | Vous avez une erreur dans le fichier de configuration qui empêche de démmarer | + | Vous avez une erreur dans le fichier de configuration qui empêche de démarrer |
| + | ---- | ||
| + | Lors de la connexion vous obtenez le message | ||
| + | < | ||
| + | Il vous manque une bibliothèque (normalement installé sous ubuntu 12.04). Vous devez installer le paquet **libpam-ldap** pour résoudre votre problème. | ||
| ===== Voir aussi. ===== | ===== Voir aussi. ===== | ||
| (en) [[https:// | (en) [[https:// | ||
| - | (en) [[http:// | + | (en) [[https:// |
| - | + | ||
| - | (en) [[http:// | + | |
| + | (en) [[https:// | ||
| ---- | ---- | ||
| - | + | //[[: | |
| - | + | ||
| - | + | ||
| - | --- // | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
