ISPConfig 3 ProFTPd pro Debian
1 Úvod
Jsem nový uživatel ISPConfig a už pár let si hraju s Linuxem. Můj server je v současné době VPS s OpenVZ a nedovolí mi spustit výchozí pureftpd, který je součástí ISPConfig, tak jsem se začal poohlížet po ProFTPd a zjistil jsem, že přechod na jeho používání není příliš těžké.
2 Předinstalace
Poznámka:Toto nezahrnuje podporu kvót, protože moje VPS ji nepodporuje. Pokud máte nějaké návrhy nebo nápady, jak zlepšit tuto integraci, aniž byste museli upravovat ftp_user_edit.php v ISPConfig3, dejte mi prosím vědět. Tyto instrukce byly vytvořeny s Debianem 5.0 Lenny, ale měly by fungovat stejně pro 6.0. Pro ostatní distribuce může být nutné tyto pokyny mírně upravit.
Poznámka:Tento proces pro mě fungoval dobře na novém serveru a instalaci ISPConfig 3. Použití tohoto na existujícím serveru bude vyžadovat vstup a úpravu/uložení každého vytvořeného ftp uživatele a může způsobit další problémy. Mohu vytvořit jednoduchý php skript, který to v budoucnu udělá automaticky. Nenesu odpovědnost za žádné problémy, které mohou nastat, proto to prosím používejte NA VLASTNÍ RIZIKO.
3 Instalace
Spustit
apt-get remove pure-ftpd-common pure-ftpd-mysql
apt-get install proftpd proftpd-mod-mysql
Run as standalone
Vytvořit skupinu a uživatele
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -gftpgroup ftpuser
4 Konfigurace databáze
mysql -u root -p
Použít dbispconfig
Spustit dotaz:
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='ProFTP group table';
INSERT INTO `ftp_group` (`groupname`, `gid`, `members`) VALUES
('ftpgroup', 2001, 'ftpuser');
5 Konfigurace ProFTPd
Upravte /usr/local/ispconfig/interface/lib/config.inc.php:
nano /usr/local/ispconfig/interface/lib/config.inc.php
Najděte proměnnou db_password.
Heslo si poznamenejte na později.
Upravit /etc/proftpd/proftpd.conf
nano /etc/proftpd/proftpd.conf
Najít:
#Include /etc/proftpd/sql.conf
Změnit na:
Include /etc/proftpd/sql.conf
Upravit /etc/proftpd/sql.conf
nano /etc/proftpd/sql.conf
Vymažte veškerý obsah a nahraďte jej:
#
# Proftpd sample configuration for SQL-based authentication.
#
# (This is not to be used if you prefer a PAM-based SQL authentication)
#
<IfModule mod_sql.c>
DefaultRoot ~
SQLBackend mysql
# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups
# used to connect to the database
# [email protected] database_user user_password
SQLConnectInfo [email protected] ispconfig _insertpasswordhere_
# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo ftp_user username password uid gid dir shell
# Here we tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo ftp_group groupname gid members
# set min UID and GID - otherwise these are 999 each
SQLMinID 500
# create a user's home directory on demand if it doesn't exist
CreateHome off
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
RootLogin off
RequireValidShell off
</IfModule>
Nezapomeňte změnit _insertpassword here_ na heslo, které jste získali z ISPConfig.
Pokud je vaše databáze MySQL na jiném serveru, změňte localhost tak, aby představoval váš server MySQL.
Upravit:/etc/proftpd/modules.conf
nano /etc/proftpd/modules.conf
Najít:
#LoadModule mod_sql.c
Změnit na:
LoadModule mod_sql.c
Najít:
#LoadModule mod_sql_mysql.c
Změnit na:
LoadModule mod_sql_mysql.c
Spustit:
/etc/init.d/proftpd restart
6 změn ISPConfig 3
Nyní musíme změnit jeden ze souborů ispconfig. To není ideální, jako když upgradujete na novou verzi, ztratíte změny, ale je to jediný způsob, jak zajistit, aby proftpd fungoval.
Upravit /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
nano/usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
Najít:
$uid = $web["system_user"]; $gid = $web["system_group"];
Nahradit za:
$userinfo = posix_getpwnam($web["system_user"]); $uid = $userinfo['uid']; $gid = $userinfo['gid'];
Poznámka:Pokud jste aktuálně přihlášeni do webového panelu ISPConfig, musíte se před zaregistrováním změn na vašem počítači odhlásit.