Debian的ISPConfig 3 ProFTPd
1介绍
我是ISPConfig的新用户,我已经在使用Linux几年了。 我的服务器目前是一个使用OpenVZ的VPS,它不允许我运行ISPConfig附带的默认pureftpd,所以我开始研究ProFTPd,发现切换到使用它并不是很难。
2预安装
请注意:这不包括配额支持,因为我的VPS不支持。 如果您有任何关于如何改进此集成的建议或想法,而无需修改ISPConfig3
中的ftp_user_edit.php,请让我知道。 这些说明是运行Debian 5.0 Lenny,但应该为6.0工作。 对于其他分销,这些说明可能需要稍加修改。
另请注意:这个过程对我来说在一个新鲜的服务器和ISPConfig 3的安装上工作正常。 在现有服务器上使用此功能将需要进入和编辑/保存已创建的每个ftp用户,并可能会导致其他问题。 我可能会创建一个简单的PHP脚本,以便将来自动执行此操作。 对于可能出现的任何问题,我不负任何责任,所以请使用此您自己的风险。
3安装
跑
apt-get remove pure-ftpd-common pure-ftpd-mysql
apt-get install proftpd proftpd-mod-mysql
Run as standalone
创建组和用户
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
4数据库配置
mysql -u root -p
Use dbispconfig
运行查询:
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 ProFTPd配置
编辑/usr/local/ispconfig/interface/lib/config.inc.php
:
nano /usr/local/ispconfig/interface/lib/config.inc.php
查找变量db_password
。
稍后注意密码。
编辑/etc/proftpd/proftpd.conf
nano /etc/proftpd/proftpd.conf
找:
#Include /etc/proftpd/sql.conf
改成:
Include /etc/proftpd/sql.conf
编辑/etc/proftpd/sql.conf
nano /etc/proftpd/sql.conf
擦除所有内容并替换为:
#
# 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
# databasename@host database_user user_password
SQLConnectInfo dbispconfig@localhost 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>
确保将_insertpasswordhere_
更改为从ISPConfig检索的密码。
如果您的MySQL数据库位于另一个服务器上,请更改localhost
来表示您的MySQL服务器。
编辑:/etc/proftpd/modules.conf
nano /etc/proftpd/modules.conf
找:
#LoadModule mod_sql.c
改成:
LoadModule mod_sql.c
找:
#LoadModule mod_sql_mysql.c
改成:
LoadModule mod_sql_mysql.c
跑:
/etc/init.d/proftpd restart
6 ISPConfig 3更改
现在我们必须更改一个ispconfig文件。 这不是理想的,就像升级到新版本一样,您将失去更改,但它是使proftpd工作的唯一方法,我可以找到。
编辑/usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
nano /usr/local/ispconfig/interface/web/sites/ftp_user_edit.php
找:
$uid = $web["system_user"]; $gid = $web["system_group"];
用。。。来代替:
$userinfo = posix_getpwnam($web["system_user"]); $uid = $userinfo['uid']; $gid = $userinfo['gid'];
注意:如果您当前登录到ISPConfig的Web面板,则必须在您的计算机上注册更改之前注销。