Ceci est une ancienne révision du document !
Note > Voici l’emplacement des fichiers de configuration :
On installe vsftpd et on le stoppe le temps de le configurer
agi vsftpd /etc/init.d/vsftpd stop
Sur MySQL ou MariaDB, on cree un utilisateur BDDUSER avec une bdd qui lui est associee (via phpmyadmin par exemple)Ensuite on crée deux nouvelles tables dans cette bdd
-- # Creation d''une table ftpcomptes avec 3 champs (id, pseudo, mdp) CREATE TABLE IF NOT EXISTS `ftpcomptes` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `pseudo` VARCHAR( 250 ) NOT NULL , `mdp` VARCHAR( 250 ) NOT NULL , UNIQUE (`pseudo`) ); -- # Creation d''une table ftplogging avec 7 champs (id, pseudo, pid, host, rhost, time, msg) CREATE TABLE IF NOT EXISTS `ftplogging` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `pseudo` VARCHAR( 250 ) NOT NULL , `pid` VARCHAR( 250 ) NOT NULL , `host` VARCHAR( 250 ) NOT NULL , `rhost` VARCHAR( 250 ) NOT NULL , `time` VARCHAR( 250 ) NOT NULL , `msg` VARCHAR( 250 ) NOT NULL, INDEX (`pseudo`) ); -- # Creation d''un premier utilisateur virtuel sur MySQL. Son pseudo est "exemple" avec comme mot de passe "mypass" (crypt=1 donc ENCRYPT) INSERT INTO ftpcomptes (pseudo, mdp) VALUES('exemple', ENCRYPT('mypass'));
On l’installe, et surtout on n’oublie pas le module libpam-mysql :
agi libpam libpam-mysql
Il faut maintenant configurer pam, qui va permettre a vsftpd d’aller chercher les utilisateurs dans la base mysql plutôt que dans les utilisateurs systeme, stockés dans /etc/passwd et /etc/shadow.On sauvegarde l’ancien fichier (au cas où, mais pas dans le même répertoire, sinon il serait lu aussi) et on en crée un tout neuf :
mkdir -p /var/backups/config cp /etc/pam.d/vsftpd /var/backups/config/vsftpd.bak nano /etc/pam.d/vsftpd
Et on remplace l’integralite du contenu par les lignes 2 suivantes,Où BDDUSER est l’utilisateur crée sur MySQLBDDPASS son mot de passeBDDNAME le nom de la base de donnees qui lui est associée
auth required pam_mysql.so verbose=1 user=BDDUSER passwd=BDDPASS host=localhost db=BDDNAME table=ftpcomptes usercolumn=pseudo passwdcolumn=mdp crypt=1 sqllog=true logtable=ftplogging logmsgcolumn=msg logusercolumn=pseudo logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time account required pam_mysql.so verbose=1 user=BDDUSER passwd=BDDPASS host=localhost db=BDDNAME table=ftpcomptes usercolumn=pseudo passwdcolumn=mdp crypt=1 sqllog=true logtable=ftplogging logmsgcolumn=msg logusercolumn=pseudo logpidcolumn=pid loghostcolumn=host logrhostcolumn=rhost logtimecolumn=time ### INFOS # verbose : Mode verbeux, necessaire pour logger les acces ( 0=desactive, 1 = active ) # user : Utilisateur employe par VsftpD pour se conncter a MySQL # password : Mot de passe de l'utilsateur employe par VsftpD pour se connecter a MySQL # host : Hote hebergeant le serveur MySQL (localhost ou adresse IP) # db : nom de la base de donnees a utiliser # table : nom de la table contenant les utilisateurs # usercolumn : nom de la colonne contenant les noms des utilisateurs # passwdcolumn : nom de la colone contenant les mot de passe des utilisateurs # crypt : type de cryptage utilise pour les mots de passe ( 0 = clair , 1 = fonction ENCRYPT(), 2 = fonction PASSWORD(), 3 = fonction MD5(), 4 = fonction SHA1() ) # sqllog : activation du logging d'acces en base SQL ( 0 = desactive, 1 = active ) # logtable : nom de la table de log des acces utilisateurs # logmsgcolumn : nom de la colonne ou seront stockes les messages de pam_mysql # logusercolumn : nom de la colonne ou seront stockes les nom des utilisateurs # logpidcolumn : nom de la colonne ou seront stockes les numeros de process (pid) # loghostcolumn : nom de la colonne ou seront stockes les adresses ou se connectent les utilisateurs (en general le serveur lui même) # logrhostcolumn : nom de la colonne ou seront stockes les adresses distantes des utilisateurs # logtimecolumn : nom de la colonne ou seront stockes les heures de connexion