Configuração FTP · 3 min read · Nov 06, 2025

ISPConfig 3 ProFTPd Para Debian

ISPConfig 3 ProFTPd Para Debian

1 Introdução

Sou um novo usuário do ISPConfig e tenho brincado com Linux há alguns anos. Meu servidor é atualmente um VPS com OpenVZ e não me permite executar o pureftpd padrão que vem com o ISPConfig, então comecei a investigar o ProFTPd e descobri que não era muito difícil mudar para usá-lo.

2 Pré-Instalação

Por favor, note: Isso não inclui suporte a quota porque meu VPS não suporta. Se você tiver alguma sugestão ou ideia sobre como melhorar essa integração sem ter que modificar ftp_user_edit.php no ISPConfig3, por favor, me avise. Estas instruções foram feitas executando Debian 5.0 Lenny, mas devem funcionar da mesma forma para 6.0. Para outras distribuições, essas instruções podem precisar ser modificadas ligeiramente.

Também note: Este processo funcionou bem para mim em um servidor novo e instalação do ISPConfig 3. Usar isso em um servidor existente exigirá entrar e editar/salvar cada usuário ftp que foi criado e pode causar outros problemas. Eu posso criar um script php simples para fazer isso automaticamente no futuro. Não sou responsável por quaisquer problemas que possam surgir, então, por favor, use isso POR SUA CONTA E RISCO.

3 Instalação

Execute

apt-get remove pure-ftpd-common pure-ftpd-mysql
apt-get install proftpd proftpd-mod-mysql

Executar como autônomo

Criar Grupo & Usuário

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “usuário proftpd” -g ftpgroup ftpuser

4 Configuração do Banco de Dados

mysql -u root -p
Use dbispconfig

Execute a consulta:

ALTER TABLE `ftp_user` ADD `shell` VARCHAR( 18 ) NOT NULL DEFAULT  '/sbin/nologin',  
ADD `count` INT( 11 ) NOT NULL DEFAULT '0',  
ADD `accessed` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',  
ADD `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';  
CREATE TABLE ftp_group (  
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='Tabela de grupo ProFTP';  
INSERT INTO `ftp_group` (`groupname`, `gid`, `members`) VALUES  
('ftpgroup', 2001, 'ftpuser');

5 Configuração do ProFTPd

Edite /usr/local/ispconfig/interface/lib/config.inc.php:

nano /usr/local/ispconfig/interface/lib/config.inc.php

Encontre a variável db_password.

Anote a senha para depois.

Edite /etc/proftpd/proftpd.conf

nano /etc/proftpd/proftpd.conf

Encontre:

#Include /etc/proftpd/sql.conf

Mude para:

Include /etc/proftpd/sql.conf

Edite /etc/proftpd/sql.conf

nano /etc/proftpd/sql.conf

Apague todo o conteúdo e substitua por:

#  
# Configuração de exemplo do Proftpd para autenticação baseada em SQL.  
#  
# (Isso não deve ser usado se você preferir uma autenticação SQL baseada em PAM)  
#  
  
DefaultRoot ~  
  
SQLBackend mysql  
  
# As senhas no MySQL são criptografadas usando CRYPT  
  
SQLAuthTypes  Plaintext Crypt  
  
SQLAuthenticate         users groups  
  
# usado para conectar ao banco de dados  
# nome_do_banco@host usuário_do_banco senha_do_usuário  
SQLConnectInfo  dbispconfig@localhost ispconfig _inserirsenhaaqui_  
  
# Aqui dizemos ao ProFTPd os nomes das colunas do banco de dados na "tabela de usuários"  
# com as quais queremos que ele interaja. Combine os nomes com os do db  
SQLUserInfo     ftp_user username password uid gid dir shell  
  
# Aqui dizemos ao ProFTPd os nomes das colunas do banco de dados na "tabela de grupos"  
  
# com as quais queremos que ele interaja. Novamente, os nomes combinam com os do db  
SQLGroupInfo    ftp_group groupname gid members  
  
# defina UID e GID mínimos - caso contrário, esses são 999 cada  
SQLMinID        500  
  
# crie o diretório home de um usuário sob demanda se não existir  
CreateHome off  
  
# Atualize a contagem toda vez que o usuário fizer login  
SQLLog PASS updatecount  
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser  
  
# Atualize modificado toda vez que o usuário enviar ou excluir um arquivo  
SQLLog  STOR,DELE modified  
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser  
  
RootLogin off  
  
RequireValidShell off  
  
  
  

Certifique-se de mudar inserirsenhaaqui para a senha que você recuperou do ISPConfig.

Se seu banco de dados MySQL estiver em outro servidor, mude localhost para representar seu servidor MySQL.

Edite: /etc/proftpd/modules.conf

nano /etc/proftpd/modules.conf

Encontre:

#LoadModule mod_sql.c

Mude para:

LoadModule mod_sql.c

Encontre:

#LoadModule mod_sql_mysql.c

Mude para:

LoadModule mod_sql_mysql.c

Execute:

/etc/init.d/proftpd restart

6 Mudanças no ISPConfig 3

Agora precisamos mudar um dos arquivos do ispconfig. Isso não é ideal, pois se você atualizar para uma nova versão, perderá as alterações, mas é a única maneira de fazer o proftpd funcionar que consegui encontrar.

Edite /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php

nano /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php

Encontre:

$uid = $web["system_user"];
$gid = $web["system_group"];

Substitua por:

$userinfo = posix_getpwnam($web["system_user"]);
$uid = $userinfo['uid'];
$gid = $userinfo['gid'];

Nota: se você estiver atualmente logado no painel web do ISPConfig, você deve sair antes que as alterações sejam registradas em sua máquina.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.