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 04/11/2021, 10:21] – [Un simple fichier DB (Berkeley db)] thpo | 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> Precise tutoriel | + | {{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 20: | 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 49: | Ligne 48: | ||
| Insérez ce contenu (copier/ | Insérez ce contenu (copier/ | ||
| < | < | ||
| - | # ftp server | + | # ftp server |
| ##################### | ##################### | ||
| listen=YES | listen=YES | ||
| Ligne 96: | Ligne 95: | ||
| Le nom d' | Le nom d' | ||
| - | //cf. config :// | + | //cf. config :// |
| // | // | ||
| // | // | ||
| - | // | + | // |
| Ligne 120: | 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 126: | Ligne 125: | ||
| Copiez/ | Copiez/ | ||
| < | < | ||
| - | user1 | + | user1 |
| 123456 | 123456 | ||
| user2 | user2 | ||
| Ligne 133: | 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 144: | 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 174: | Ligne 173: | ||
| (Ajoutez //-p// à cette commande si vous utilisez un mot de passe pour le compte //root//.) | (Ajoutez //-p// à cette commande si vous utilisez un mot de passe pour le compte //root//.) | ||
| - | Vous entrez alors dans l' | + | Vous entrez alors dans l' |
| <note important> | <note important> | ||
| Ligne 195: | Ligne 194: | ||
| 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 / | ||
| Ligne 206: | Ligne 205: | ||
| <note important> | <note important> | ||
| < | < | ||
| - | auth | + | auth |
| - | account | + | account |
| </ | </ | ||
| Ligne 218: | Ligne 217: | ||
| 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 227: | Ligne 226: | ||
| < | < | ||
| mkdir / | mkdir / | ||
| - | mkdir / | + | mkdir / |
| mkdir / | mkdir / | ||
| mkdir / | mkdir / | ||
| Ligne 234: | 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 258: | Ligne 257: | ||
| 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 265: | 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 |
| < | < | ||
| Ligne 297: | Ligne 296: | ||
| 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 313: | Ligne 312: | ||
| nano / | nano / | ||
| </ | </ | ||
| - | Ajoutez les identifiants d' | + | Ajoutez les identifiants d' |
| Ligne 337: | Ligne 336: | ||
| Copiez/ | Copiez/ | ||
| < | < | ||
| - | #!/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 |
| </ | </ | ||
| Donnez le droit d' | Donnez le droit d' | ||
| Ligne 377: | Ligne 376: | ||
| - | Ici un script scripts d' | + | Ici un script scripts d' |
| < | < | ||
| touch / | touch / | ||
| Ligne 385: | Ligne 384: | ||
| <note important> | <note important> | ||
| < | < | ||
| - | #!/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 |
| </ | </ | ||
| Donnez le droit d' | Donnez le droit d' | ||
| Ligne 451: | Ligne 450: | ||
| - | **Exemples d' | + | **Exemples d' |
| ajout d'un utilisateur | ajout d'un utilisateur | ||
| Ligne 457: | Ligne 456: | ||
| / | / | ||
| </ | </ | ||
| - | modification d'un mot de passe | + | modification d'un mot de passe |
| < | < | ||
| / | / | ||
| </ | </ | ||
| - | suppression d'un utilisateur | + | suppression d'un utilisateur |
| < | < | ||
| / | / | ||
| Ligne 474: | 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' |
| ---- | ---- | ||
| Ligne 485: | Ligne 484: | ||
| 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émarrer le daemon. | Vous avez une erreur dans le fichier de configuration qui empêche de démarrer le daemon. | ||
| Ligne 498: | Ligne 497: | ||
| (en) [[https:// | (en) [[https:// | ||
| - | (en) [[http:// | + | (en) [[https:// |
| - | + | ||
| - | (en) [[http:// | + | |
| + | (en) [[https:// | ||
| ---- | ---- | ||
| - | + | //[[: | |
| - | + | ||
| - | + | ||
| - | --- // | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
