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