ISPConfig 3 ProFTPd适用于Debian

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面板,则必须在您的计算机上注册更改之前注销。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏