miércoles, 4 de mayo de 2011

Configurar servidor Proftpd Ubuntu 10.04

proftpd.jpgmysql.jpg
Hola estube probando de muchas formas como montar un server ProFTPd en Ubuntu 10.04, utilizando virtual host por medio de una base de datos en MYSQL , y como encontre muy poca informacion al respecto, aprobeche de documentar mi experiencia en dos medios en mi wiki http://luisvilg.wikispaces.com y http://luisvilg.blogspot.com.



  • Instalar programas y librerias necesarias.
  • Crear carpeta y asignacion de permisos.


btn-azul.jpeg Primero hacemos un update a la lista de repositorios. Para luego Instalar paquetes para la utilizacion como servidor web y administrador visual de Mysql (Phpmyadmin). y por ultimo instalamos el servidor ftp (Proftpd) y su libreria mysql


sudo aptitude update
sudo apt-get install mysql-server mysql-client phpmyadmin apache2 proftpd-mod-mysql
sudo apt-get install proftpd-basic proftpd-mod-mysql
 
Ahora tenemos que crear un grupo y de usuario que todos los usuarios de FTP pertenecen a :

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
 
Crear una nueva base de datos y un nuevo usuario que tenga acceso a la base de dato :

mysql -u root -p
 
create database ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY '**password**';
FLUSH PRIVILEGES;
 
btn-rojo.jpeg Nota: Cambie la "password" por la contraseña que desea utilizar para este usuario ademas .
Ahora es el momento de crear las tablas de la base de datos que necesitamos para la autenticación. todo esto mientras este logeado como root en la consola mysql.


USE ftp;
 
CREATE TABLE ftpgroup (
groupname varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '5500',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table';
 
CREATE TABLE ftpuser (
id int(10) unsigned NOT NULL auto_increment,
userid varchar(32) NOT NULL default '',
passwd varchar(32) NOT NULL default '',
uid smallint(6) NOT NULL default '5500',
gid smallint(6) NOT NULL default '5500',
homedir varchar(255) NOT NULL default '',
shell varchar(16) NOT NULL default '/sbin/nologin',
count int(11) NOT NULL default '0',
accessed datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='ProFTP user table';
 
Ahora agregue el grupo y los usuarios que quieren tener acceso FTP todo esto mientras estemos logeado en la consolta mysql:


INSERT INTO ftpgroup (groupname, gid, members) VALUES ('ftpgroup', 2001, 'ftpuser');
 
INSERT INTO ftpuser (id, userid, passwd, uid, gid, homedir, shell, count, accessed,
modified) VALUES (1, '**testuser**', ENCRYPT('**secret**'), 2001, 2001,
'**/home/testuser**','/sbin/nologin', 0, '', '');
 
quit;
Crear un nuevo documento llamado mysql.conf. Esto se utiliza para indicar al servidor proftp cómo comunicarse con mysql:


sudo gedit /etc/proftpd/mysql.conf


#Force the use of mysql backend
SQLBackend                      mysql
# The passwords in MySQL are using its own ENCRYPT function
# There is another SQLAuthTypes you could use called Backend to
# store passwords.  If you choose this make sure you use mysql's
# OLD_PASSWORD() function to store the data.  I couldn't get the
# stand PASSWORD() function to work with it.
SQLAuthTypes                    Crypt
SQLAuthenticate                 users* groups*
# used to connect to the database
# databasename@host database_user user_password
SQLConnectInfo  ftp@localhost proftpd password
# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo     ftpuser userid passwd uid gid homedir shell
# Tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo    ftpgroup groupname gid members
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog  STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

No hay comentarios :

Publicar un comentario