Servei FTP amb validació a Mysql amb FreeBSD
30-01-2007 > Miquel Casanovas PuigviMostrar o escribir comentarios (dudas) sobre este artículo
Sistema:
FreeBSD 6.2 Realase
Mysql-Server 5.0
ProFTPD Version 1.3.0
Fem la instal·lació mitjançant els ports de FreeBSD. Es recomana actualitzar el sistema de ports abans de fer la instal·lació (per exemple utilitzant "portsnap"):
> whereis proftpd
/usr/ports/ftp/proftpd
> cd /usr/ports/ftp/proftpd
> make install clean
Ens apareixerà un requadre amb opcions, seleccionarem la opció de "support MySql" i esperem que faci la compilació i instal·lació Procedim a configurar que s'executi en l'inici del SO i l'arranquem en aquesta instància:
> vim /etc/rc.conf (afegirem proftpd_enable="YES")
> cp /usr/local/etc/rc.d/proftpd /usr/local/etc/rc.d/proftpd.sh
> /usr/local/etc/rc.d/proftpd.sh start
El servei FTP (file transfer protocol) ja és actiu, podem comprovar-ho validant-nos amb les dades de les comptes locals. No obstant, el que ens interessa és que podem validar els usuaris en una taula de MySql. (es suposa que es té el Mysql-server instal·lat) Per això, primer crearem una base de dades:
> mysqladmin -p -u root CREATE nom_base_dades
Posteriorment es crea una taula que guardarà certa informació dels usuaris:
> mysql -u root -p
mysql> use nom_base_dades;
mysql> CREATE TABLE users (
userid varchar(30) NOT NULL default '',
passwd varchar(80) NOT NULL default '',
uid int(11) default NULL,
gid int(11) default NULL,
homedir varchar(255) default NULL,
shell varchar(255) default NULL,
UNIQUE KEY uid (uid),
UNIQUE KEY userid (userid);
mysql> exit;
Amb la taula creada procedim a donar permisos d'escriptura i lectura a aquesta BD a un usuari per no haver de treballar amb root:
> mysql -p -u root
mysql> GRANT insert,select,update,delete,create,drop,alter
ON nom_base_dades.* TO usuari@localhost IDENTIFIED BY 'contrasenya';
> exit;
Ara ja podem donar d'alta tants usuaris com vulguem, per exemple:
> mysql -p -u root
mysql> use nom_base_dades;
mysql> INSERT INTO users VALUES ('client', 'contrasenya', 202, 200, '/data/ftp/gurx.homelinux.com/', 'nologin');
mysql> exit;
Finalment ja només falta configurar el software proftpd perquè es validi a la base de dades creada anteriorment. El procediment és el següent:
> vim /usr/local/etc/proftpd.conf (i afegirem el següent)
RequireValidShell off
AuthPAM on
SQLAuthTypes Plaintext
SQLAuthenticate users*
SQLConnectInfo nom_base_dades@localhost usuari contrasenya
SQLDefaultGID 65534
SQLDefaultUID 65534
SQLMinUserGID 100
SQLMinUserUID 500
SQLUserInfo users userid passwd uid gid homedir shell
I reiniciem el servei:
> /usr/local/etc/rc.d/proftpd restart
*.- Assegureu-vos que la carpeta arrel de l'usuari virtual tingui permisos per el seu UID i GID. En el nostre cas, i per l'usuari client es faria el següent:
> chown -R 202:200 /data/ftp/gurx.homelinux.com*
