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 21/12/2012, 19:05] – [Configuration] 82.234.48.146 | 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: | ||
| - | ====== VSFTPD multi-utilisateurs multi-dossiers avec DB ou MYSQL. ====== | + | {{tag> |
| - | {{tag> Precise tutoriel vsftpd db mysq }} | + | ====== 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 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 48: | Ligne 48: | ||
| Insérez ce contenu (copier/ | Insérez ce contenu (copier/ | ||
| < | < | ||
| - | # ftp server | + | # ftp server |
| ##################### | ##################### | ||
| listen=YES | listen=YES | ||
| Ligne 95: | Ligne 95: | ||
| Le nom d' | Le nom d' | ||
| - | //cf. config :// | + | //cf. config :// |
| // | // | ||
| // | // | ||
| - | // | + | // |
| 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 ==== | + | ==== 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> |
| < | < | ||
| - | auth | + | auth |
| - | account | + | account |
| </ | </ | ||
| **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.** | ||
| + | |||
| ===== Dossiers des utilisateurs virtuels ===== | ===== Dossiers des utilisateurs virtuels ===== | ||
| Ligne 216: | 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 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 256: | 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 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 |
| < | < | ||
| Ligne 295: | 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 311: | Ligne 312: | ||
| nano / | nano / | ||
| </ | </ | ||
| - | Ajoutez les identifiants d' | + | Ajoutez les identifiants d' |
| Ligne 335: | 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 375: | Ligne 376: | ||
| - | Ici un script scripts d' | + | Ici un script scripts d' |
| < | < | ||
| touch / | touch / | ||
| Ligne 383: | 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 449: | Ligne 450: | ||
| - | **Exemples d' | + | **Exemples d' |
| ajout d'un utilisateur | ajout d'un utilisateur | ||
| Ligne 455: | Ligne 456: | ||
| / | / | ||
| </ | </ | ||
| - | modification d'un mot de passe | + | modification d'un mot de passe |
| < | < | ||
| / | / | ||
| </ | </ | ||
| - | suppression d'un utilisateur | + | suppression d'un utilisateur |
| < | < | ||
| / | / | ||
| Ligne 472: | 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 483: | 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 496: | Ligne 497: | ||
| (en) [[https:// | (en) [[https:// | ||
| - | (en) [[http:// | + | (en) [[https:// |
| - | + | ||
| - | (en) [[http:// | + | |
| + | (en) [[https:// | ||
| ---- | ---- | ||
| - | + | //[[: | |
| - | + | ||
| - | + | ||
| - | --- // | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
