On 10/19/2010 10:43 AM, Juan Carlos wrote:
Hola a la comunidad necesito montar un FTP pero que yo le diga de donde
va a cargar los Datos, y que tengan acceso todos los usuarios
(anonymous) y con permisos de solo lectura, Abel lo que me mandastes no
me sirvio en la configuracion de mi vsftpd no venian las lineas me
dijistes modificara que Distro tu usas??? Yo uso Debian 5.0.6 Lenny y no
vi eso en la configuracion del vsftpd por favor si alguien me puede
echar una mano se lo agradeceria, lo que quiero es algo sencillo normal
sin muchas complicaciones...

1 - Instalar soporte: MySQL, Apache, PhpMyAdmin

apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2

1.1 - Aunque durante de la instalacion del MySQL me piden un password para el usuario "root", en caso de haberla obviado y dejado en blanco, puedo darle una usando:

mysqladmin -u root password <nuevo_password>

1.2 - Chequeo por donde esta escuchando el MySQL:

netstat -tap | grep mysql

1.3 - Si la salida de este comando es:

tcp 0 0 localhost.localdo:mysql *:* LISTEN 2713/mysqld

Esto significa que esta escuchando solo local, lo cual se me hace seguro con el password asignado en el paso (2), pero si la salida es algo como:

tcp        0      0 *:mysql *:*                     LISTEN     2713/mysqld

Entonces debo ponerle password a los accesos a mi MySQL desde mi hostname (Usare como ejemplo "server1.example.com"):

mysqladmin -h server1.example.com -u root password <nuevo_password>

2 - Instalar Pure-FTPd con soporte MSQL

aptitude install pure-ftpd-mysql

2.1 - Crear un grupo y un usuario (en esta guia "ftpgroup" y "ftpuser") con los que se van a mapear todos los usuarios virtuales. Asignarles un GID y UID disponible en el sistema (en esta guia uso el 2001):

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

3 - Crear la base de datos para Pure-FTPd

3.1 - Creo una BBDD (en esta guia la llamare "pureftpd") y un usuario ("pureftpd" en esta guia, con contrasena "ftpdpass") con el cual el demonio de Pure-FTPd se conectara a dicha BBDD

mysql -u root -p

CREATE DATABASE pureftpd;

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'ftpdpass';

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'ftpdpass';

FLUSH PRIVILEGES;

3.2 - Creo la tabla de control de usuarios (es la unica tabla con que consta esta BBDD)

USE pureftpd;

CREATE TABLE ftpd (
User varchar(16) NOT NULL default '',
status enum('0','1') NOT NULL default '0',
Password varchar(64) NOT NULL default '',
Uid varchar(11) NOT NULL default '-1',
Gid varchar(11) NOT NULL default '-1',
Dir varchar(128) NOT NULL default '',
ULBandwidth smallint(5) NOT NULL default '0',
DLBandwidth smallint(5) NOT NULL default '0',
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default '*',
QuotaSize smallint(5) NOT NULL default '0',
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;

quit;

4 - Configurar Pure-FTPd

Editamos el fichero /etc/pure-ftpd/db/mysql.conf no sin antes aplicar la buena practica de duplicar el actual

cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig

Lo vaciamos

cat /dev/null > /etc/pure-ftpd/db/mysql.conf

Y lo editamos

vim /etc/pure-ftpd/db/mysql.conf

Debe quedar asi

--------------------- Start of /etc/pure-ftpd/db/mysql.conf ---------------------

MYSQLSocket      /var/run/mysqld/mysqld.sock
#MYSQLServer     localhost
#MYSQLPort       3306
MYSQLUser       pureftpd
MYSQLPassword   ftpdpass
MYSQLDatabase   pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt      md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")

--------------------- End of /etc/pure-ftpd/db/mysql.conf -----------------------

NOTA: Recordar sustituir los valores de prueba utilizados en esta guia por los que utilicemos en la configuracion real

4.1 - Crear el fichero /etc/pure-ftpd/conf/ChrootEveryone y escribirle dentro la cadena "yes"

echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone

Esto hara que PureFTPd "chrootee" a cada usuario virtual en su home y no le permita navegar mas alla

4.2 - Crear tambien el fichero /etc/pure-ftpd/conf/CreateHomeDir y escribire "yes" adentro tambien

echo "yes" > /etc/pure-ftpd/conf/CreateHomeDir

Con este mandato, Pure-FTPd se encargara de crear el home de un usuario si al entrar este, aun no existe

4.3 - Configurar el Pure-FTPd como un demonio "standalone" (independiente, pues por defecto viene controlado por inetd) para esto, editar el fichero /etc/default/pure-ftpd-common y cambiar el valor del parametro STANDALONE_OR_INETD a "standalone"

vim /etc/default/pure-ftpd-common

Debe quedar asi (el resto de los parametros se mantienen intactos)

--------------------- Start of /etc/default/pure-ftpd-common --------------------

[...]
STANDALONE_OR_INETD=standalone
[...]

--------------------- End of /etc/default/pure-ftpd-common ----------------------

Luego editar /etc/inetd.conf y comentar la linea "ftp"

vim /etc/inetd.conf

Debe quedar asi

--------------------- Start of /etc/inetd.conf ----------------------------------

[...]
#ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
[...]

--------------------- End of /etc/inetd.conf ------------------------------------

Luego de esto, reiniciar Inetd y Pure-FTPd

/etc/init.d/openbsd-inetd restart
/etc/init.d/pure-ftpd-mysql restart

5 - Poblar la BBDD y probar

Acceder a MySQL y una vez dentro a la BBDD pureftpd

mysql -u root -p

USE pureftpd;

Ahora, como ejemplo, crear el usuario "exampleuser" con el valor de su status en "1" (lo cual implica que su cuenta ftp estara activa), su password sera "secret" (se almacenara cifrado utilizando la funcion MD5 de MySQL), el UID y GID seran 2001 (el mismo valor del usuario/password que se creo en el paso 2.1), su home sera "/home/exampleuser", ancho de banda de subida y descarga fijado a 100Kbps y una cuota de espacio de 50Mb

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/exampleuser', '100', '100', '', '*', '50', '0');

quit;

La hora de la verdad, probar si se ha hecho todo correctamente, para ello, abrir el cliente ftp preferido e intentar conectarse, para este ejemplo los valores serian: host "server1.example.com" el usuario "exampleuser" y el pasword "secret". Use los que usted haya definido.

Si logre conectarme, FELICIDADES... Si no, algo hice mal.



Slds
Willians

--

Este mensaje le ha llegado mediante el servicio de correo electronico que 
ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema 
Nacional de Salud. La persona que envia este correo asume el compromiso de usar 
el servicio a tales fines y cumplir con las regulaciones establecidas

Infomed: http://www.sld.cu/

______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
http://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a