Serveur FTP authentifié via Mysql
Par placeoweb, jeudi 22 février 2007 à 00:13 :: Système :: #50 :: rss
Comment faire un serveur FTP avec des utilisateurs virtuels déclarés sous Mysql ?
Pure-FTPd MySQL avec DEBIAN ETCH (4.0)
J'ai tester cela avec succès sous DEBIAN ETCH avec pure-ftpd-mysql.
#Installation apt-get install-mysql # Lecture de la doc cd /usr/share/doc/pure-ftpd-common gzip -d README.MySQL.gz vim README.MySQL # Configuration d'accès myqsl vim /etc/pure-ftpd/db/mysql.conf
Création de la base de donnée et de la table avec la structure définie dans le fichier de doc. Ensuite ajout des utilisateurs dans cette table.
Puis lancement définitif en standalone après les erreurs rencontrées reportées par syslog :
- Le serveur ne se lance pas. Dans le fichier /etc/default/pure-ftpd-common j'ai modifié la ligne STANDALONE_OR_INETD=inetd par STANDALONE_OR_INETD=standalone et du coup /etc/init.d/pure-ftpd-mysql start fonctionne !
- [WARNING] Wrong SQL parameters : [SELECT Password FROM users WHERE User="www-data"]
La table n'était pas encore crée.
- [WARNING] Can't login as [www-data]: account disabled
Côté client : 530 Sorry, but I can't trust you Il faut passer le /etc/pure-ftpd/conf/MinUID à une valeur au minimum égale à votre user web.
- [INFO] www-data is now logged in
Ah quelle joie quand tout fonctionne !
D'autres infos sur les sites :
- Installation et configuration du serveur FTP Pure-FTPd sous Debian détaillant les paramètres.
- Problème avec pure-ftpd-mysql précisant des options telles que comment afficher les fichiers commençant par un point.
Il suffit de créer un fichier /etc/pure-ftpd/conf/DisplayDotFiles et d'y inscrire : "yes"
Identiquement, pour bloquer les utilisateurs dans leur home (chroot), rajouter le fichier /etc/pure-ftpd/conf/ChrootEveryone dont le contenu est "yes"
Pure-FTPd MySQL avec SUSE 10
J'ai tester cela avec succès sous SUSE 10 avec pure-ftpd.
Installez avec yast votre serveur FTP : pure-ftpd
5. Support de MySQL Le support de MySQL apporte la possibilité d'assurer l'authentification des utilisateurs via une base de donnée.
5.1. Prérequis
MySQL doit être installé afin d'activer cette fonctionnalité. Pure-FTPd nécessite également d'être compilé avec l'option --with-mysql.
5.2. Configuration de Pure-FTPd
vi pure-ftpd.conf # MySQL configuration file (see README.MySQL) # MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf
# If you want to enable PAM authentication, uncomment the following line #PAMAuthentication yes # If you want simple Unix (/etc/passwd) authentication, uncomment this # UnixAuthentication yes
Nous allons créer un fichier de configuration afin d'y placer toutes les options pour le support de MySQL.
vi /etc/pure-ftpd/pureftpd-mysql.conf
MYSQLServer monserveurmysql.mondomaine.com MYSQLPort 3306 #MYSQLSocket /tmp/mysql.sock MYSQLUser root MYSQLPassword rootpw MYSQLDatabase pureftpd MYSQLCrypt cleartext MYSQLGetPW SELECT Password FROM users WHERE User="\L" MYSQLGetUID SELECT Uid FROM users WHERE User="\L" MYSQLGetGID SELECT Gid FROM users WHERE User="\L" MYSQLGetDir SELECT Dir FROM users WHERE User="\L"
PureFTPd utilise des variables pour ses requêtes SQL, comme \L dans l'exemple: \L désigne le login de l'utilisateur. \I désigne l'adresse IP a laquelle le client se connecte. \P désigne le port auqel le client se connecte. \R désigne l'adresse IP du client. \D désigne l'adresse IPv4 du client au format décimal.
Il suffit maintenant de lancer Pure-FTPd avec l'option -l mysql:
/usr/sbin/pure-ftpd -l mysql:/etc/pure-ftpd/pureftpd-mysql.conf &
ou plus simplement
/etc/init.d/pure-ftpd restart
Notez qu'il est possible de mixer plusieurs méthodes d'authentification qui se compléteront les unes aux autres. 5.3. Strucures des tables MySQL
On commence par créer une base pureftpd (via phpmyadmin par exemple).
Ensuite on crée la table users:
CREATE TABLE users ( User varchar(16) NOT NULL default '', Password varchar(64) NOT NULL default '', Uid int(11) NOT NULL default '-1', Gid int(11) NOT NULL default '-1', Dir varchar(128) NOT NULL default '', PRIMARY KEY (User) );
Vous pouvez dès lors rajouter des utilisateurs dans la base et profiter de votre serveur FTP. N'oubliez pas de définir le Uid et Gid.
Ensuite pour connaître les utilisateurs définis sur votre serveur, utilisez la commande :
pure-ftpwho
Article réalisé selon l'explication de pure ftpd par supinfo surement lui même réalisé suivant how to forge : pure ftpd mysql
Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.