Instalando serviço de FTP com DB em mysql

Started by remontti, 18 de November , 2008, 10:44:19 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

remontti

Neste tuto estarei explicando como instalar o serviço de ftp com usuários e anonymous, utilizei a distro Debian Etch.
Utilizaremos os pacotes pureftp com mysql, vamos a instalação:

Primeiramenteo vamos instala-lo o pureftp, e em siga criar o grupo ftpgroup, e o usuario ftpuser.

# apt-get install pure-ftpd-mysql
# groupadd -g 2001 ftpgroup
# useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser


Feito isso vamos acessar o mysql.
Caso não tenha mysql instalado aqui esta os dois comandos que precisa saber:

# aptitude install mysql-server
# mysqladmin -u root password SUA-SENHA-DO-MYSQL


Enta vamos lá:
mysql -u root -p

Apos digitar sua senha estamos no myql, agora vamos criar o usuario de acesso ao mysq
Quote
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost' IDENTIFIED BY 'SUA-SENHA';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO 'pureftpd'@'localhost.localdomain' IDENTIFIED BY 'SUA-SENHA';
FLUSH PRIVILEGES;
CREATE DATABASE `pureftpd` ;
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;

Criando copia do arquivo original e criando o nosso
cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
cat /dev/null > /etc/pure-ftpd/db/mysql.conf
vim /etc/pure-ftpd/db/mysql.conf

Quote

MYSQLSocket      /var/run/mysqld/mysqld.sock
#MYSQLServer     localhost
#MYSQLPort       3306
MYSQLUser       pureftpd
MYSQLPassword   SUA-SENHA
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")
MySQLGetQTASZ   SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")
MySQLGetQTAFS   SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R")

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


Altere no arquivo vim pure-ftpd-common a linha
STANDALONE_OR_INETD=inited por STANDALONE_OR_INETD=standalone
vim /etc/default/pure-ftpd-common
Ficando assim
Quote
# Configuration for pure-ftpd
# (this file is sourced by /bin/sh, edit accordingly)

# STANDALONE_OR_INETD
# valid values are "standalone" and "inetd".
# Any change here overrides the setting in debconf.
STANDALONE_OR_INETD=standalone

# VIRTUALCHROOT:
# whether to use binary with virtualchroot support
# valid values are "true" or "false"
# Any change here overrides the setting in debconf.
VIRTUALCHROOT=false
...............
...........
........

Comente a linha:
vim /etc/inetd.conf
#ftp     stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper

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


Vamos acessar novamente o mysql e adicionar um usuário:

mysql -u root -p
QuoteUSE pureftpd;
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('teste', '1', MD5('minhasenha'), '2001', '2001', '/home/teste', '100', '100', '', '*', '50', '0');
quit;

Explicando:
User = nome de usuario
status = 1 ativo = qlqr outro numeor inativo
Password = sua senha (MD5)
Uid = 2001
Gid = 2001
Dir = diretorio do seu usuario
ULBandwidth = velocidade de acesso ao seu ftp envio
DLBandwidth = velocidade recebimento ou vice versa ja nem lembro hehehe
comment = comentario
ipaccess = se tiver um ip somente daquele podera acessar ftp a este usuario
QuotaSize = tamanho maximo do diretorio
QuotaFiles = tamanho maximo de um arquivo no direotorio

Anonymous FTP

groupadd ftp
useradd -s /bin/false -d /home/ftp -m -c "anonymous ftp" -g ftp ftp
echo "no" > /etc/pure-ftpd/conf/NoAnonymous
/etc/init.d/pure-ftpd-mysql restart
cd /home/ftp
mkdir incoming
chown ftp:nogroup incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/


\o/ Pronto!!!

basta vc acessar ftp://teste@sei_ip/ devera pedir seu usuario e senha
e p/ anonimos ftp://sei_ip/

Acredito que era isso, qlqr erro ou dúvidas postem ai!
Abraço


Magrinho Loko

Saudades do antigo Darkers.

remontti


Alucard