Como instalar e configurar o vsftpd

Vsftpd é provavelmente o ftpserver mais seguro e rápido para sistemas unix e seus derivados. Para se ter uma idéia, os seguintes sites usam ele com seu ftpserver padrão:

* ftp.redhat.com
* ftp.suse.com
* ftp.debian.org
* ftp.gnu.org
* ftp.gnome.org
* ftp.kde.org
* ftp.rpmfind.net
* ftp.linux.org.uk
* ftp.gimp.org
* ftp.openbsd.org
* ftp.sunet.se
* ftp.ximian.com
* ftp.engardelinux.org

Deu para notar que esse ftpserver é realmente seguro. Bom, vamos deixar a história de lado e vamos por a mão na massa, e começaremos baixando o pacote:

wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-1.2.0.tar.gz

tar xvzf vsftpd-1.2.0.tar.gz
cd vsftpd-1.2.0

Agora para compilar digita simplesmente:

make

O vsftpd precisa do usuario "nobody" na sua configuração default. Caso o seu sistema não tenha esse usuário, você tem que adicioná-lo:

useradd nobody
useradd: user nobody exists

O vsftpd tambem precisa que seja criado o diretorio /usr/share/empty :

mkdir -p /usr/share/empty/
mkdir: cannot create directory `/usr/share/empty': File exists

Para poder configurar o vsftpd para aceita usuários anonymous, será nescessário ter o usuário ftp no seu sistema, e que o user tenha um diretório, com as permissões setadas para o mesmo. Caso o seu sistema não tenha esse user, adicione-o:

mkdir -p /home/ftp
useradd -d /home/ftp ftp
chown root.root /home/ftp
chmod og-w /home/ftp

Agora copie os arquivos do vsftpd para os seus respectivos lugares:

cp vsftpd /usr/local/sbin/vsftpd
cp vsftpd.conf.5 /usr/local/man/man5
cp vsftpd.8 /usr/local/man/man8
cp vsftpd.conf /etc

Agora vamos configurar o inet para rodar o mesmo, então edite o seu /etc/inetd.conf e faca a seguinte mudança:

ftp stream tcp nowait root /usr/sbin/tcpd proftpd

por

ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd

salve e reinicie o inetd:

killall -HUP inetd

Caso queira usá-lo sem o inetd, acrescente a seguinte linha no /etc/vsftpd.conf:

listen=YES

agora starte o vsftpd:

root@but3k4:~# /usr/local/sbin/vsftpd
[1] 3693

agora vamos ver se está funcionando:

root@slack:~# ftp localhost
Connected to localhost.
220 (vsFTPd 1.2.0)
Name (localhost:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -la
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.>
drwxr-xr-x        2  0            0                    4096  Nov  02  17:39 .
drwxr-xr-x        2  0            0                    4096  Nov  02  17:39 ..
226 Directory send OK.
ftp> 

Pronto, o seu vsftpd está instalado e rodando perfeitamente, agora vamos fazer algumas configurações:

edite o arquivo /etc/vsftpd.conf e descomente as seguintes linhas:

#local_enable=YES

esta linha ativa o acesso a usuários que estão no /etc/passwd.

#write_enable=YES

esta linha ativa o acesso a escrita nos diretórios do users.

#ftpd_banner=Welcome to blah FTP service.

Altere o nome "Welcome to blah FTP service" para o nome do seu servidor ex: but3k4 FTP Server

chroot_local_user=YES

Acrescente esta linha, caso queira que os usuários fiquem presos no seu home.

syslog_enable=YES

Acrescente esta linha, para todos os acessos ficarem gravados no /var/log/messages.

use_localtime=YES

Acrescente esta linha caso queira que ele pegue a data do sistema.

userlist_enable=YES

Se esta opção for ativada o vsftpd irá ler uma lista de nomes que está na opção do userlist_file. Se o usuário que esta tentando acessar o sistema tiver o nome neste arquivo, terá seu acesso negado antes de ser perguntado a senha do mesmo.

userlist_file=/etc/ftpusers

esse arquivo diz ao vsftpd quais usuários que não poderão acessar o sistema. Para cadastrar todos os usuários do seu /etc/passwd no /etc/ftpusers, use o seguinte comando:

cat /etc/passwd | cut -d: -f1 | grep -v "seu-user" > /etc/ftpusers
echo "anonymous" >> /etc/ftpusers

Essa segunda linha e caso você queira que o anonymous não logue no seu ftp.

Bom, acho que o agora o seu servidor vsftpd está configurado e rodando perfeitamente, caso queira saber mais opções para o mesmo, de um:

man vsftpd.conf

Espero poder ter ajudado todos com esse tutorial, pois esta é uma boa alternativa para o popular proftpd. :)

Cláudio Borges

claudio[at]linuxti.pro.br
www.linuxti.pro.br