我已经设置了一个带有MySQL连接的proftpd服务器。 一切正常。
我想使用(PathAllowFilter
,PathDenyFilter
,...来确定数据库中每个用户的特定权限。
服务器在Ubuntu 12.04 LTS发行版上运行。
答案 0 :(得分:1)
这并不容易,没有单一模块可以做到这一点。但我找到了解决方案。
这不是最佳的,因为每次更改MySQL配置时都必须重新启动ProFTPd服务器,但它可以正常工作。
由于你有一台已经运行MySQL的ProFTPd服务器,我只会解释特定用户配置的部分。
对于此解决方案,您需要使用这些模块编译ProFTPd:
<IfUser>
条件)为了帮助您重新编译ProFTPd,您可以运行此命令proftpd -V
以查看您的版本的配置方式。您可以找到一些文档here。
编译ProFTPd服务器并运行后,您将必须登录MySQL服务器。
如果您阅读mod_conf_sql,他们会说要创建3个表ftpctxt, ftpconf, ftpmap
。我们将不创建这些表,除非您想从MySQL进行全局配置。
我们将使用“views”伪造MySQL配置。
<强> 1。首先,将每个特定配置添加为用户列(确保具有默认值):
ALTER TABLE ftpuser #
ADD PathDenyFilter VARCHAR( 255 ) NOT NULL DEFAULT '(\.ftp)|(\.hta)[a-z]+$';`
ALTER TABLE ftpuser
ADD PathAllowFilter VARCHAR( 255 ) NOT NULL DEFAULT '.*$';`
....
<强> 2。创建conf
视图:
id
和配置列连接在一起,形成唯一的id
type
info
View是一个选择联合(对于每个列都需要一个联合)
CREATE VIEW ftpuser_conf AS SELECT concat(ftpuser.id,'-PathDenyFilter')
AS id,'PathDenyFilter' AS type,ftpuser.PathDenyFilter AS info from ftpuser
UNION
SELECT concat(ftpuser.id,'-PathAllowFilter')
AS id,'PathAllowFilter' AS type, ftpuser.PathAllowFilter AS info
from ftpuser;
第3。创建ctxt
视图
id
,用户的行的用户id
+ 1为id
。< / LI>
id
连接为name
type
用户的用户名为info
CREATE VIEW ftpuser_ctxt AS
SELECT 1 AS id,NULL AS parent_id, 'default' AS name, 'default' AS type, NULL AS info
UNION
SELECT (ftpuser.id + 1) AS id,1 AS parent_id,
concat('userconf-',ftpuser.userid) AS name,
'IfUser' AS type,ftpuser.userid AS info
FRON ftpuser;
<强> 4。创建map
视图
id
和配置列连接在一起conf_id
id
ctxt_id
+ 1
View是一个选择联合(对于每个列都需要一个联合)
CREATE VIEW ftpuser_map
AS SELECT concat(ftpuser.id,'-PathDenyFilter')
AS conf_id,(ftpuser.id + 1) AS ctxt_id
from ftpuser
union
select concat(ftpuser.id,'-PathAllowFilter')
AS conf_id,(ftpuser.id + 1) AS ctxt_id
from ftpuser;
<强> 5。将这些行添加到ProFTPd配置
<IfModule mod_conf_sql.c>
Include sql://user:password@host/db:database/ctxt:ftpuser_ctxt:id,parent_id,type,info/conf:ftpuser_conf:id,type,info/map:ftpuser_map:conf_id,ctxt_id/base_id=1
</IfModule>
其中:
user
=&gt;你的MySQL用户名password
=&gt;你的MySQL密码host
=&gt;你的MySQL主机database
=&gt;你的MySQL数据库<强> 6。重新启动ProFTPd服务器
我希望这会对你有所帮助。祝你好运