Hospedagem Virtual · 6 min read · Jan 20, 2026
Hospedagem Virtual Com PureFTPd E MySQL (Incl. Gerenciamento De Quota E Largura De Banda) No Debian Lenny - Página 2
5 Configurar PureFTPd
Edite /etc/pure-ftpd/db/mysql.conf. Deve ficar assim:
cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig
cat /dev/null > /etc/pure-ftpd/db/mysql.conf
vi /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() ou password() - md5 é MUITO RECOMENDÁVEL em vez de texto claro 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") |
Certifique-se de substituir a string ftpdpass pela senha real do usuário MySQL pureftpd na linha MYSQLPassword! Observe que usamos md5 como método MYSQLCrypt, o que significa que armazenaremos as senhas dos usuários como uma string MD5 no banco de dados, o que é muito mais seguro do que usar senhas em texto claro!
Em seguida, crie o arquivo /etc/pure-ftpd/conf/ChrootEveryone que simplesmente contém a string yes:
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryoneIsso fará com que o PureFTPd chroot cada usuário virtual em seu diretório inicial, para que ele não possa navegar em diretórios e arquivos fora de seu diretório inicial.
Crie também o arquivo /etc/pure-ftpd/conf/CreateHomeDir que novamente simplesmente contém a string yes:
echo "yes" > /etc/pure-ftpd/conf/CreateHomeDirIsso fará com que o PureFTPd crie o diretório inicial do usuário quando o usuário fizer login e o diretório inicial ainda não existir.
Agora devemos configurar o PureFTPd como um daemon autônomo (atualmente ele é controlado pelo inetd). Para fazer isso, abrimos /etc/default/pure-ftpd-common e mudamos o valor do parâmetro STANDALONE_OR_INETD para standalone:
vi /etc/default/pure-ftpd-common| # Configuração para pure-ftpd # (este arquivo é fonte por /bin/sh, edite conforme necessário) # STANDALONE_OR_INETD # valores válidos são "standalone" e "inetd". # Qualquer alteração aqui substitui a configuração no debconf. STANDALONE_OR_INETD=standalone # VIRTUALCHROOT: # se deve usar binário com suporte a virtualchroot # valores válidos são "true" ou "false" # Qualquer alteração aqui substitui a configuração no debconf. VIRTUALCHROOT=false # UPLOADSCRIPT: se isso estiver definido e o daemon estiver sendo executado em modo autônomo, # pure-uploadscript também será executado para iniciar o programa dado abaixo # para lidar com uploads. veja /usr/share/doc/pure-ftpd/README.gz ou # pure-uploadscript(8) # exemplo: UPLOADSCRIPT=/usr/local/sbin/uploadhandler.pl UPLOADSCRIPT= # se definido, pure-uploadscript iniciará $UPLOADSCRIPT executando como o # uid e gid dados UPLOADUID= UPLOADGID= |
Em seguida, modificamos /etc/inetd.conf e comentamos a linha ftp:
vi /etc/inetd.conf| [...] #:STANDARD: Estes são serviços padrão. #ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper [...] |
Depois, reiniciamos o Inetd e o PureFTPd:
/etc/init.d/openbsd-inetd restart
/etc/init.d/pure-ftpd-mysql restart6 Preencher O Banco De Dados E Testar
Para preencher o banco de dados, você pode usar o shell do MySQL:
mysql -u root -pUSE pureftpd;Agora criamos o usuário exampleuser com o status 1 (o que significa que sua conta ftp está ativa), a senha secret (que será armazenada criptografada usando a função MD5 do MySQL), o UID e GID 2001 (use o userid e groupid do usuário/grupo que você criou no final do passo dois!), o diretório inicial /home/www.example.com, uma largura de banda de upload e download de 100 KB/sec. (kilobytes por segundo), e uma quota de 50 MB:
INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('exampleuser', '1', MD5('secret'), '2001', '2001', '/home/www.example.com', '100', '100', '', '*', '50', '0');quit;Agora abra seu programa cliente FTP em sua estação de trabalho (algo como WS_FTP ou SmartFTP se você estiver em um sistema Windows ou gFTP em um desktop Linux) e tente se conectar. Como nome do host, use server1.example.com (ou o endereço IP do sistema), o nome de usuário é exampleuser e a senha é secret.
Se você conseguir se conectar - parabéns! Se não, algo deu errado.
Agora, se você executar
ls -l /homedevemos ver que o diretório /home/www.example.com (diretório inicial de exampleuser) foi criado automaticamente, e é de propriedade de ftpuser e ftpgroup (o usuário/grupo que criamos no final do passo três):
server1:~# ls -l /home
total 8
drwxr-xr-x 2 administrator administrator 4096 2009-02-16 13:18 administrator
drwxr-xr-x 2 ftpuser ftpgroup 4096 2009-06-05 16:09 www.example.com
server1:~#7 Administração Do Banco De Dados
Para a maioria das pessoas, é mais fácil ter uma interface gráfica para o MySQL; portanto, você também pode usar o phpMyAdmin (neste exemplo em http://server1.example.com/phpmyadmin/) para administrar o banco de dados pureftpd.

Sempre que você quiser criar um novo usuário, você deve criar uma entrada na tabela ftpd, então explicarei as colunas desta tabela aqui:
Tabela ftpd:
- User: O nome do usuário virtual PureFTPd (por exemplo, exampleuser).
- status: 0 ou 1. 0 significa que a conta está desativada, o usuário não pode fazer login.
- Password: A senha do usuário virtual. Certifique-se de usar a função MD5 do MySQL para salvar a senha criptografada como uma string MD5:

- UID: O userid do usuário ftp que você criou no final do passo dois (por exemplo, 2001).
- GID: O groupid do grupo ftp que você criou no final do passo dois (por exemplo, 2001).
- Dir: O diretório inicial do usuário virtual PureFTPd (por exemplo, /home/www.example.com). Se não existir, será criado quando o novo usuário fizer login pela primeira vez via FTP. O usuário virtual será preso a este diretório inicial, ou seja, ele não pode acessar outros diretórios fora de seu diretório inicial.
- ULBandwidth: Largura de banda de upload do usuário virtual em KB/sec. (kilobytes por segundo). 0 significa ilimitado.
- DLBandwidth: Largura de banda de download do usuário virtual em KB/sec. (kilobytes por segundo). 0 significa ilimitado.
- comment: Você pode inserir qualquer comentário aqui (por exemplo, para sua administração interna) aqui. Normalmente, você deixa este campo vazio.
- ipaccess: Insira endereços IP aqui que estão autorizados a se conectar a esta conta FTP. * significa que qualquer endereço IP está autorizado a se conectar.
- QuotaSize: Espaço de armazenamento em MB (não KB, como em ULBandwidth e DLBandwidth!) que o usuário virtual pode usar no servidor FTP. 0 significa ilimitado.
- QuotaFiles: quantidade de arquivos que o usuário virtual pode salvar no servidor FTP. 0 significa ilimitado.
8 FTP Anônimo
Se você quiser criar uma conta ftp anônima (uma conta ftp que qualquer um pode fazer login sem uma senha), você pode fazer assim:
Primeiro, crie um usuário ftp (com o homedir /home/ftp) e grupo ftp:
groupadd ftp
useradd -s /bin/false -d /home/ftp -m -c "ftp anônimo" -g ftp ftpEm seguida, crie o arquivo /etc/pure-ftpd/conf/NoAnonymous que contém a string no:
echo "no" > /etc/pure-ftpd/conf/NoAnonymousCom esta configuração, o PureFTPd permitirá logins anônimos.
Reinicie o PureFTPd:
/etc/init.d/pure-ftpd-mysql restartEm seguida, criamos o diretório /home/ftp/incoming que permitirá que usuários anônimos façam upload de arquivos. Daremos ao diretório /home/ftp/incoming permissões de 311 para que os usuários possam fazer upload, mas não ver ou baixar nenhum arquivo naquele diretório. O diretório /home/ftp terá permissões de 555, o que permite ver e baixar arquivos:
cd /home/ftp
mkdir incoming
chown ftp:nogroup incoming/
chmod 311 incoming/
cd ../
chmod 555 ftp/Agora usuários anônimos podem fazer login, e eles podem baixar arquivos de /home/ftp, mas os uploads são limitados a /home/ftp/incoming (e uma vez que um arquivo é enviado para /home/ftp/incoming, não pode ser lido nem baixado de lá; o administrador do servidor deve movê-lo para /home/ftp primeiro para torná-lo disponível para outros).
9 Links
- PureFTPd: http://www.pureftpd.org
- MySQL: http://www.mysql.com
- phpMyAdmin: http://www.phpmyadmin.net
- Debian: http://www.debian.org
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.