Servei FTP amb validació a Mysql amb FreeBSD

30-01-2007 > Miquel Casanovas Puigvi


Mostrar 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*

 

Mostrar o escribir comentarios (dudas) sobre este artículo