Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine 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] ChesterKiKtutoriel: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}}
 +
 ====== 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'adapter au versions précédentes.+Il a été réalisé sous Ubuntu 12.04, mais peut s'adapter aux versions précédentes.
  
 Pour réaliser cette installation, il ne vous faudra pas plus de 10 minutes. Pour réaliser cette installation, il ne vous faudra pas plus de 10 minutes.
- 
  
 ===== Pré-requis ===== ===== Pré-requis =====
Ligne 19: Ligne 19:
   * Disposer des droits d'administration   * Disposer des droits d'administration
   * 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'ajouter sudo à toutes les commandes. Passez en utilisateur « root » pour éviter d'ajouter sudo à toutes les commandes.
 <code> <code>
Ligne 32: Ligne 32:
 </code> </code>
  
-===== 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/coller), quelques commentaires vous permettent de l'adapter suivant vos préférences, et vous trouverez des références à cette configuration dans les chapitres suivants. Insérez ce contenu (copier/coller), quelques commentaires vous permettent de l'adapter suivant vos préférences, et vous trouverez des références à cette configuration dans les chapitres suivants.
 <file> <file>
-# 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=/ftpzone/$USER'' +local_root=/ftpzone/$USER
 hide_ids=YES hide_ids=YES
 </file> </file>
Ligne 95: Ligne 95:
  
 Le nom d'utilisateur local et le dossier racine peuvent être adaptés, mais vous devrez changer la configuration en conséquence. Le nom d'utilisateur local et le dossier racine peuvent être adaptés, mais vous devrez changer la configuration en conséquence.
-//cf. config :// +//cf. config ://
 //guest_username=vsftpd// //guest_username=vsftpd//
 //nopriv_user=vsftpd// //nopriv_user=vsftpd//
-//local_root=/ftpzone/$USER// +//local_root=/ftpzone/$USER//
  
  
-===== UTILISATEURS VIRTUEL =====+===== UTILISATEURS VIRTUELS =====
  
 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 /root/vsftpd_login.txt touch /root/vsftpd_login.txt
 </code> </code>
-Editez le fichier et définissez deux utilisateurs pour exemple user1 et user2, respectivement avec les mots de passe 123456 et 654321.+Editez le fichier et définissez deux utilisateurs pour exemple user1et user2, respectivement avec les mots de passe 123456 et 654321.
  <code>  <code>
 nano /root/vsftpd_login.txt nano /root/vsftpd_login.txt
Ligne 125: Ligne 125:
 Copiez/collez ces 4 lignes : Copiez/collez ces 4 lignes :
 <file> <file>
-user1 +user1
 123456 123456
 user2 user2
Ligne 132: Ligne 132:
 <note important>ATTENTION il est important de ne pas ajouter de retour, ni de ligne supplémentaire après le dernier mot de passe .</note> <note important>ATTENTION il est important de ne pas ajouter de retour, ni de ligne supplémentaire après le dernier mot de passe .</note>
  
-Générez ensuite le fichier db dans /etc/vsftpd_login.db : +Générez ensuite le fichier db dans /etc/vsftpd_login.db :
 <code> <code>
 db_load -T -t hash -f /root/vsftpd_login.txt /etc/vsftpd_login.db db_load -T -t hash -f /root/vsftpd_login.txt /etc/vsftpd_login.db
Ligne 143: Ligne 143:
  
 Définissez la config de PAM pour l'authentification , créez le fichier /etc/pam.d/vsftpd : Définissez la config de PAM pour l'authentification , créez le fichier /etc/pam.d/vsftpd :
-//cf config : pam_service_name=vsftpd// +//cf config : pam_service_name=vsftpd//
 <code> <code>
 touch /etc/pam.d/vsftpd touch /etc/pam.d/vsftpd
Ligne 153: Ligne 153:
 Copiez/collez ce contenu  : Copiez/collez ce contenu  :
 <file> <file>
-auth required /lib/i386-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login +auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login 
-account required /lib/i386-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login+account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
 </file> </file>
  
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
 <code> <code>
-mysqladmin -u root --password='******' create vsftpd +sudo mysql
 </code> </code>
 +(Ajoutez //-p// à cette commande si vous utilisez un mot de passe pour le compte //root//.)
  
-Entrez ensuite dans le système de commande SQL, pour créer l'utilisateur de la base vsftpd, puis créer la table d'utilisateurs virtuels et insérer vos deux premiers utilisateurs, pour exemple user1 et user2 avec les mots de passe 123456 et 654321 :+Vous entrez alors dans l'invite de commande SQL ou vous pouvez créer une base de données vsftpd associée à un utilisateur MySQL vsftpd, puis créer la table d'utilisateurs FTP et insérer vos deux premiers utilisateurs FTP, pour exemple user1et user2 avec les mots de passe 123456 et 654321 :
  
-<note important>N'oubliez pas de changer le mot de passe de l'utilisateur de la base vsftpd en fonction de vos préférences, ici  « XpassftpX ».</note>+<note important>N'oubliez pas de changer le mot de passe de l'utilisateur de la base vsftpd en fonction de vos préférences, ici  « mot_de_passe ».</note>
 <code> <code>
-mysql -u root --password='******'  +CREATE DATABASE vsftpd; 
-GRANT ALL PRIVILEGES ON vsftpd.* TO "vsftpd"@"localhost" IDENTIFIED BY 'XpassftpX';  +GRANT ALL ON vsftpd.* TO "vsftpd"@"localhost" IDENTIFIED BY 'mot_de_passe'; 
-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 '0',  +`quota` int(10) NOT NULL default '0', 
-PRIMARY KEY  (username)  +PRIMARY KEY  (username) 
-) ENGINE=MyISAM COMMENT='Utilisateurs Virtuels pour le ftp';  +) ENGINE=MyISAM COMMENT='Utilisateurs Virtuels pour le ftp'; 
-INSERT INTO `utilisateurs` (`username`,`password`) VALUES ("user1", ENCRYPT("123456")) ;  +INSERT INTO `utilisateurs` (`username`,`password`) VALUES ("user1", ENCRYPT("123456")); 
-INSERT INTO `utilisateurs` (`username`,`password`) VALUES ("user2", ENCRYPT("654321")) ;  +INSERT INTO `utilisateurs` (`username`,`password`) VALUES ("user2", ENCRYPT("654321")); 
-quit+QUIT;
 </code> </code>
- 
  
  
 Il vous reste à créer le fichier pour l'identification PAM , et indiquer dans ce fichier comment lire votre base. Il vous reste à créer le fichier pour l'identification PAM , et indiquer dans ce fichier comment lire votre base.
 Créez le fichier /etc/pam.d/vsftpd : Créez le fichier /etc/pam.d/vsftpd :
-//cf config : pam_service_name=vsftpd// +//cf config : pam_service_name=vsftpd//
 <code> <code>
 touch /etc/pam.d/vsftpd  touch /etc/pam.d/vsftpd 
 </code> </code>
-Éditez ce fichier : +Éditez ce fichier :
 <code> <code>
 nano /etc/pam.d/vsftpd  nano /etc/pam.d/vsftpd 
 </code> </code>
 Copiez/coller ce contenu  : Copiez/coller ce contenu  :
-<note important>N'oubliez pas de modifier le mot de passe de l'utilisateur de la base vsftpd en fonction de votre création, ici « XpassftpX ».</note> +<note important>N'oubliez pas de modifier le mot de passe de l'utilisateur de la base vsftpd en fonction de votre création, ici « mot_de_passe».</note> 
-<code+<file
-auth       required pam_mysql.so user=vsftpd passwd=XpassftpX host=127.0.0.1 db=vsftpd table=utilisateurs usercolumn=username passwdcolumn=password crypt=1  +auth       required pam_mysql.so user=vsftpd passwd=mot_de_passe host=127.0.0.1 db=vsftpd table=utilisateurs usercolumn=username passwdcolumn=password crypt=1 
-account    required pam_mysql.so user=vsftpd passwd=XpassftpX host=127.0.0.1 db=vsftpd table=utilisateurs usercolumn=username passwdcolumn=password crypt=1  +account    required pam_mysql.so user=vsftpd passwd=mot_de_passe host=127.0.0.1 db=vsftpd table=utilisateurs usercolumn=username passwdcolumn=password crypt=1 
-</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 des utilisateurs virtuels =====+ 
 +===== Dossiers des utilisateurs virtuels =====
    
  
 Nous définissons ici le dossier racine du FTP /ftpzone, mais vous devez l'adapter suivant le home de votre utilisateur principal et modifier la configuration en conséquence. Nous définissons ici le dossier racine du FTP /ftpzone, mais vous devez l'adapter suivant le home de votre utilisateur principal et modifier la configuration en conséquence.
-//cf. config : virtual_use_local_privs=YES ; user_sub_token=$USER ; local_root=/ftpzone/$USER// +//cf. config : virtual_use_local_privs=YES ; user_sub_token=$USER ; local_root=/ftpzone/$USER//
  
-Pour fonctionner dans ce mode, vsftpd attend :  +Pour fonctionner dans ce mode, vsftpd attend : 
-- un dossier racine (jail) pour chaque utilisateur sans droit d'écriture +- un dossier racine (jail) pour chaque utilisateur sans droit d'écriture
 - un ou plusieurs sous-dossiers pour chaque utilisateur avec droit d'écriture, dans notre exemple le sous dossier sera nommé « upload ». - un ou plusieurs sous-dossiers pour chaque utilisateur avec droit d'écriture, dans notre exemple le sous dossier sera nommé « upload ».
  
Ligne 225: Ligne 226:
 <code> <code>
 mkdir /ftpzone  mkdir /ftpzone 
-mkdir /ftpzone/user1 +mkdir /ftpzone/user1
 mkdir /ftpzone/user1/upload  mkdir /ftpzone/user1/upload 
 mkdir /ftpzone/user2  mkdir /ftpzone/user2 
Ligne 232: Ligne 233:
 Définition les droits pour les dossiers des utilisateurs virtuels  : Définition les droits pour les dossiers des utilisateurs virtuels  :
 <code> <code>
-chmod 555 /ftpzone/user1 +chmod 555 /ftpzone/user1
 chmod 775 /ftpzone/user1/upload  chmod 775 /ftpzone/user1/upload 
 chmod 555 /ftpzone/user2  chmod 555 /ftpzone/user2 
Ligne 251: Ligne 252:
 <code> <code>
 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 :
 <code> <code>
 service vsftpd restart  service vsftpd restart 
 </code> </code>
-<note>Attention si il y a une erreur de configuration, vsftpd n'affiche aucun message, il ne se lance pas alors que la commande affiche néanmoins un id de process. +<note>Attention si il y a une erreur de configuration, vsftpd n'affiche aucun message, il ne se lance pas alors que la commande affiche néanmoins un id de process.
 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.</note> 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.</note>
  
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:xxx):** user1** Name (127.0.0.1:xxx):** user1**
  
-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
  
 <note>Lorsque vous devez utiliser ce service FTP depuis une autre machine extérieur à votre réseau, ou si vous venez de l'installer sur un serveur dédié, assurez vous que le port défini dans la configuration (par défaut 21) est ouvert dans votre firewall et dans votre passerelle réseau (box).</note> <note>Lorsque vous devez utiliser ce service FTP depuis une autre machine extérieur à votre réseau, ou si vous venez de l'installer sur un serveur dédié, assurez vous que le port défini dans la configuration (par défaut 21) est ouvert dans votre firewall et dans votre passerelle réseau (box).</note>
  
  
-===== OPTION : Définir un administrateur général =====+===== OPTION : Administrateur général =====
  
  
 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>ATTENTION : c'est dangereux pour la sécurité, cet admin pourra remonter l'arborescence générale et voir tous les fichiers autorisés en lecture pour tous les utilisateurs locaux (ex. /etc)</note> +<note important>ATTENTION : c'est dangereux pour la sécurité, cet admin pourra remonter l'arborescence générale et voir tous les fichiers autorisés en lecture pour tous les utilisateurs locaux (ex. /etc)</note>
  
 Même si vsftpd permet de le faire, je vous déconseille ce type d'utilisateur, il est préférable de garder votre accès par ssh, ou en utilisateur root local pour accéder à tous les dossiers de vos utilisateurs virtuels. Même si vsftpd permet de le faire, je vous déconseille ce type d'utilisateur, il est préférable de garder votre accès par ssh, ou en utilisateur root local pour accéder à tous les dossiers de vos utilisateurs virtuels.
  
-Le fichier /etc/vsftpd.chroot_list contiendra les utilisateurs qui n'ont pas besoin de dossier et qui pourront parcourir l'arborescence générale.  +Le fichier /etc/vsftpd.chroot_list contiendra les utilisateurs qui n'ont pas besoin de dossier et qui pourront parcourir l'arborescence générale. 
-//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 /etc/vsftpd.chroot_list  nano /etc/vsftpd.chroot_list 
 </code> </code>
-Ajoutez les identifiants d'utilisateurs virtuels autorisés (admin) - 1 par ligne +Ajoutez les identifiants d'utilisateurs virtuels autorisés (admin) - 1 par ligne
  
  
Ligne 334: Ligne 335:
 </code> </code>
 Copiez/collez ce contenu : Copiez/collez ce contenu :
-<code+<file
-#!/bin/sh  +#!/bin/sh 
-#################################################################  +################################################################# 
-# ajoute un utilisateur virtuel pour vsftpd  // BY ChesterKiK  +# ajoute un utilisateur virtuel pour vsftpd  // BY ChesterKiK 
-#################################################################  +################################################################# 
-if [ $# = "2" ] ; then  +if [ $# = "2" ] ; then 
- # ajoute username et mot de passe au fichier texte des logins  + # ajoute username et mot de passe au fichier texte des logins 
- echo $1"\n"$2 >> /root/vsftpd_login.txt  + echo $1"\n"$2 >> /root/vsftpd_login.txt 
- # converti le fichier texte en DB  + # converti le fichier texte en DB 
- db_load -T -t hash -f /root/vsftpd_login.txt /etc/vsftpd_login.db  + db_load -T -t hash -f /root/vsftpd_login.txt /etc/vsftpd_login.db 
- # securise le fichier  + # securise le fichier 
- chmod 600 /etc/vsftpd_login.db  + chmod 600 /etc/vsftpd_login.db 
- # cree le dossier utilisateur  + # cree le dossier utilisateur 
- mkdir /ftpzone/$1  + mkdir /ftpzone/$1 
- mkdir /ftpzone/$1/upload  + mkdir /ftpzone/$1/upload 
- # 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 /ftpzone/$1 
- chmod 775 /ftpzone/$1/upload  + chmod 775 /ftpzone/$1/upload 
- chown -R vsftpd:vsftpd /ftpzone/$1  + chown -R vsftpd:vsftpd /ftpzone/$1 
- # affiche le succés  + # affiche le succés 
- echo "Utilisateur FTP "$1" ajouté avec succés"  + echo "Utilisateur FTP "$1" ajouté avec succés" 
-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'execution à votre script : Donnez le droit d'execution à votre script :
 <code> <code>
Ligne 375: Ligne 376:
    
  
-Ici un script scripts d'ajout/suppression/modification nommé FTPuser +Ici un script scripts d'ajout/suppression/modification nommé FTPuser
 <code> <code>
 touch /root/FTPuser  touch /root/FTPuser 
Ligne 382: Ligne 383:
 Copiez/collez ce contenu : Copiez/collez ce contenu :
 <note important>N'oubliez pas de modifier le mot de passe de la base de donnée (ici XpassftpX).</note> <note important>N'oubliez pas de modifier le mot de passe de la base de donnée (ici XpassftpX).</note>
-<code+<file
-#!/bin/sh  +#!/bin/sh 
-#################################################################  +################################################################# 
-# gestion des utilisateurs virtuels pour vsftpd // BY CHESTERKIK  +# gestion des utilisateurs virtuels pour vsftpd // BY CHESTERKIK 
-#################################################################  +################################################################# 
-if [ $# = "3" ] && [ $1 = "add" ] ; then  +if [ $# = "3" ] && [ $1 = "add" ] ; then 
- # test si l'utilisateur existe  + # test si l'utilisateur existe 
- r=$(echo "USE vsftpd;SELECT username FROM utilisateurs WHERE username='$2';" | mysql -u vsftpd --password='XpassftpX')  + r=$(echo "USE vsftpd;SELECT username FROM utilisateurs WHERE username='$2';" | mysql -u vsftpd --password='XpassftpX'
- if [ "$r" = "" ] ; then  + if [ "$r" = "" ] ; then 
- # insert l'utilisateur et son mot de passe dans la table utilisateurs  + # insert l'utilisateur et son mot de passe dans la table utilisateurs 
- echo "USE vsftpd;INSERT INTO utilisateurs (username,password) VALUES ('$2', ENCRYPT('$3')) ;" | mysql -u vsftpd --password='XpassftpX'  + echo "USE vsftpd;INSERT INTO utilisateurs (username,password) VALUES ('$2', ENCRYPT('$3')) ;" | mysql -u vsftpd --password='XpassftpX' 
- # cree le dossier utilisateur  + # cree le dossier utilisateur 
- mkdir /ftpzone/$2  + mkdir /ftpzone/$2 
- mkdir /ftpzone/$2/upload  + mkdir /ftpzone/$2/upload 
- # 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 /ftpzone/$2 
- chmod 775 /ftpzone/$2/upload  + chmod 775 /ftpzone/$2/upload 
- chown -R vsftpd:vsftpd /ftpzone/$2  + chown -R vsftpd:vsftpd /ftpzone/$2 
- # affiche le succés  + # affiche le succés 
- echo "L'utilisateur FTP $2 a été ajouté"   + echo "L'utilisateur FTP $2 a été ajouté" 
- else  + else 
- echo "L'utilisateur $2 existe déjà";  + echo "L'utilisateur $2 existe déjà"; 
- fi  + fi 
-elif [ $# = "2" ] && [ $1 = "delete" ] ; then  +elif [ $# = "2" ] && [ $1 = "delete" ] ; then 
- # test si l'utilisateur existe  + # test si l'utilisateur existe 
- r=$(echo "USE vsftpd;SELECT username FROM utilisateurs WHERE username='$2';" | mysql -u vsftpd --password='XpassftpX')  + r=$(echo "USE vsftpd;SELECT username FROM utilisateurs WHERE username='$2';" | mysql -u vsftpd --password='XpassftpX'
- if [ "$r" = "" ] ; then  + if [ "$r" = "" ] ; then 
- echo "L'utilisateur $2 est introuvable";  + echo "L'utilisateur $2 est introuvable"; 
- else  + else 
- echo "Attention! L'utilisateur $2 et tous ses fichiers vont être supprimés."  + echo "Attention! L'utilisateur $2 et tous ses fichiers vont être supprimés." 
- echo -n "Vous êtes sur (o/N) ? "  + echo -n "Vous êtes sur (o/N) ? " 
- read rr  + read rr 
- if [ "$rr" = "o" ] || [ "$rr" = "O" ] ; then  + if [ "$rr" = "o" ] || [ "$rr" = "O" ] ; then 
- # supprime l'utilisateur dans la table  + # supprime l'utilisateur dans la table 
- echo "USE vsftpd;DELETE FROM utilisateurs WHERE username='$2';" | mysql -u vsftpd --password='XpassftpX'  + echo "USE vsftpd;DELETE FROM utilisateurs WHERE username='$2';" | mysql -u vsftpd --password='XpassftpX' 
- # supprime les dossiers  + # supprime les dossiers 
- rm -r /ftpzone/$2  + rm -r /ftpzone/$2 
- # affiche le succés  + # affiche le succés 
- echo "L'utilisateur FTP $2 a été supprimé"  + echo "L'utilisateur FTP $2 a été supprimé" 
- else  + else 
- echo "Rien n'a été supprimé"  + echo "Rien n'a été supprimé" 
- fi  + fi 
- fi  + fi 
-elif [ $# = "3" ] && [ $1 = "change" ] ; then  +elif [ $# = "3" ] && [ $1 = "change" ] ; then 
- # test si l'utilisateur existe  + # test si l'utilisateur existe 
- r=$(echo "USE vsftpd;SELECT username FROM utilisateurs WHERE username='$2';" | mysql -u vsftpd --password='XpassftpX')  + r=$(echo "USE vsftpd;SELECT username FROM utilisateurs WHERE username='$2';" | mysql -u vsftpd --password='XpassftpX'
- if [ "$r" = "" ] ; then  + if [ "$r" = "" ] ; then 
- echo "L'utilisateur $2 est introuvable";  + echo "L'utilisateur $2 est introuvable"; 
- else  + else 
- # modifie l'utilisateur dans la table  + # modifie l'utilisateur dans la table 
- echo "USE vsftpd;UPDATE utilisateurs SET password=ENCRYPT('$3') WHERE username='$2';" | mysql -u vsftpd --password='XpassftpX'  + echo "USE vsftpd;UPDATE utilisateurs SET password=ENCRYPT('$3') WHERE username='$2';" | mysql -u vsftpd --password='XpassftpX' 
- # affiche le succés  + # affiche le succés 
- echo "L'utilisateur FTP $2 a été modifié"  + echo "L'utilisateur FTP $2 a été modifié" 
- fi  + fi 
-else  +else 
- echo "Arguments attendus, syntax :"  + echo "Arguments attendus, syntax :" 
- echo " > Ajout, tapez: FTPuser add username password"  + echo " > Ajout, tapez: FTPuser add username password" 
- echo " > Suppression, tapez: FTPuser delete username"  + echo " > Suppression, tapez: FTPuser delete username" 
- 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'execution à votre script : Donnez le droit d'execution à votre script :
 <code> <code>
 chmod 750 /root/FTPuser  chmod 750 /root/FTPuser 
 </code> </code>
-**exemple d'utilisation** + 
 + 
 +**Exemples d'utilisation** 
 ajout d'un utilisateur ajout d'un utilisateur
-<code> +<code>
 /root/FTPuser add user3 456789  /root/FTPuser add user3 456789 
 </code> </code>
-modification d'un mot de passe +modification d'un mot de passe
 <code> <code>
 /root/FTPuser change user3 987654  /root/FTPuser change user3 987654 
 </code> </code>
-suppression d'un utilisateur +suppression d'un utilisateur
 <code> <code>
 /root/FTPuser delete user3  /root/FTPuser delete user3 
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 :
  
-''500 OOPS: cannot change directory:/ftpzone/user1 the folder doesnt exist''+<file>500 OOPS: cannot change directory:/ftpzone/user1the folder doesnt exist</file>  
 Vous n'avez pas créé le dossier racine de l'utilisateur Vous n'avez pas créé le dossier racine de l'utilisateur
  
-''500 OOPS: vsftpd: refusing to run with writable root inside chroot ()''  + 
-Vous n'avez pas restreint les droits d'écriture (555) sur le dossier racine de l'utilisateur (ex. /ftpzone/userx ) +<file>500 OOPS: vsftpd: refusing to run with writable root inside chroot ()</file> 
 +Vous n'avez pas restreint les droits d'écriture (555) sur le dossier racine de l'utilisateur (ex. /ftpzone/userx ) 
 + 
 +---- 
  
 Lors du redémarrage si vous constatez un message du type : Lors du redémarrage si vous constatez un message du type :
-''stop: Unknown instance'' +<file>stop: Unknown instance</file> 
-Vous avez une erreur dans le fichier de configuration qui empêche de démmarer le daemon. +Vous avez une erreur dans le fichier de configuration qui empêche de démarrer le daemon.
  
 +----
  
  
 +Lors de la connexion vous obtenez le message
 +<file>libgcc_s.so.1 must be installed for pthread_cancel to work ubuntu</file>
 +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://security.appspot.com/vsftpd.html]] (en) [[https://security.appspot.com/vsftpd.html]]
  
-(en) [[http://ubuntuforums.org/showthread.php?t=518293]] +(en) [[https://ubuntuforums.org/showthread.php?t=518293]]
- +
-(en) [[http://www.debiantutorials.com/installing-vsftpd-using-text-file-for-virtual-users/]]+
  
 +(en) [[https://www.debiantutorials.com/installing-vsftpd-using-text-file-for-virtual-users/]]
  
 ---- ----
- +//[[:Contributeurs]] : [[:utilisateurs:ChesterKiK]], ...//
- +
- +
---- //[[:utilisateurs:ChesterKiK|ChesterKiK]] Le 24/09/201216:22// +
- +
- +
- +
- +
- +
- +