Server Setup · 3 min read · Nov 06, 2025

ISPConfig 3 ProFTPd Per Debian

ISPConfig 3 ProFTPd Per Debian

1 Introduzione

Sono un nuovo utente di ISPConfig e ho giocato con Linux per alcuni anni ormai. Il mio server è attualmente un VPS con OpenVZ e non mi permette di eseguire il pureftpd predefinito che viene fornito con ISPConfig, quindi ho iniziato a esaminare ProFTPd e ho scoperto che non era molto difficile passare a usarlo.

2 Pre-Installazione

Si prega di notare: Questo non include il supporto per le quote perché il mio VPS non lo supporta. Se hai suggerimenti o idee su come migliorare questa integrazione senza dover modificare ftp_user_edit.php in ISPConfig3, ti prego di farmelo sapere. Queste istruzioni sono state create eseguendo Debian 5.0 Lenny, ma dovrebbero funzionare allo stesso modo per 6.0. Per altre distribuzioni, queste istruzioni potrebbero dover essere modificate leggermente.

Nota anche: Questo processo ha funzionato bene per me su un server fresco e un’installazione di ISPConfig 3. Utilizzare questo su un server esistente richiederà di entrare e modificare/salvare ogni utente ftp che è stato creato e potrebbe causare altri problemi. Potrei creare un semplice script php per farlo automaticamente in futuro. Non sono responsabile per eventuali problemi che potrebbero sorgere, quindi utilizza questo A TUO RISCHIO.

3 Installazione

Esegui

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

Esegui come standalone

Crea Gruppo & Utente

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

4 Configurazione del Database

mysql -u root -p
Usa dbispconfig

Esegui la query:

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='Tabella gruppo ProFTP';  
INSERT INTO `ftp_group` (`groupname`, `gid`, `members`) VALUES  
('ftpgroup', 2001, 'ftpuser');

5 Configurazione di ProFTPd

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

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

Trova la variabile db_password.

Nota la password per dopo.

Modifica /etc/proftpd/proftpd.conf

nano /etc/proftpd/proftpd.conf

Trova:

#Include /etc/proftpd/sql.conf

Cambia in:

Include /etc/proftpd/sql.conf

Modifica /etc/proftpd/sql.conf

nano /etc/proftpd/sql.conf

Cancella tutto il contenuto e sostituisci con:

#  
# Configurazione di esempio di Proftpd per l'autenticazione basata su SQL.  
#  
# (Questo non deve essere usato se preferisci un'autenticazione SQL basata su PAM)  
#  
  
DefaultRoot ~  
  
SQLBackend mysql  
  
# Le password in MySQL sono criptate usando CRYPT  
  
SQLAuthTypes  Plaintext Crypt  
  
SQLAuthenticate         users groups  
  
# usato per connettersi al database  
# nome_database@host utente_database password_utente  
SQLConnectInfo  dbispconfig@localhost ispconfig _inserisci_password_qui_  
  
# Qui diciamo a ProFTPd i nomi delle colonne del database nella "usertable"  
# con cui vogliamo interagire. Abbina i nomi con quelli nel db  
SQLUserInfo     ftp_user username password uid gid dir shell  
  
# Qui diciamo a ProFTPd i nomi delle colonne del database nella "grouptable"  
  
# con cui vogliamo interagire. Ancora una volta i nomi corrispondono a quelli nel db  
SQLGroupInfo    ftp_group groupname gid members  
  
# imposta UID e GID minimi - altrimenti questi sono 999 ciascuno  
SQLMinID        500  
  
# crea la home directory di un utente su richiesta se non esiste  
CreateHome off  
  
# Aggiorna il conteggio ogni volta che l'utente accede  
SQLLog PASS updatecount  
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser  
  
# Aggiorna modificato ogni volta che l'utente carica o elimina un file  
SQLLog  STOR,DELE modified  
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser  
  
RootLogin off  
  
RequireValidShell off  
  
  
  

Assicurati di cambiare inserisci_password_qui con la password che hai recuperato da ISPConfig.

Se il tuo database MySQL è su un altro server, cambia localhost per rappresentare il tuo server MySQL.

Modifica: /etc/proftpd/modules.conf

nano /etc/proftpd/modules.conf

Trova:

#LoadModule mod_sql.c

Cambia in:

LoadModule mod_sql.c

Trova:

#LoadModule mod_sql_mysql.c

Cambia in:

LoadModule mod_sql_mysql.c

Esegui:

/etc/init.d/proftpd restart

6 Modifiche a ISPConfig 3

Ora dobbiamo modificare uno dei file di ispconfig. Questo non è ideale, poiché se aggiorni a una nuova versione perderai le modifiche, ma è l’unico modo per far funzionare proftpd che sono riuscito a trovare.

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

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

Trova:

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

Sostituisci con:

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

Nota: se sei attualmente connesso al pannello web di ISPConfig, devi disconnetterti prima che le modifiche vengano registrate sul tuo computer.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.