首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自MySQL的特定用户配置

问来自MySQL的特定用户配置
EN

Stack Overflow用户
提问于 2013-05-10 07:48:04
回答 1查看 349关注 0票数 0

我已经设置了一个带有MySQL连接的proftpd服务器。一切都很好。

我想使用(PathAllowFilter,PathDenyFilter,...)从数据库中为每个用户设置特定的权限

运行在Ubuntu 12.04 LTS发行版上的服务器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-10 08:52:54

这并不容易,没有一个单独的模块可以做到这一点。但我找到了解决这个问题的办法。

这并不是最好的,因为每次更改MySQL配置时都必须重新启动ProFTPd服务器,但它是有效的。

因为您有一个已经运行MySQL的ProFTPd服务器,所以我将只解释特定用户配置的一部分。

对于此解决方案,您需要使用以下模块编译ProFTPd:

  • mod_ifsession (使用此模块,您将能够配置<IfUser> conditions)
  • mod_conf_sql (使用此模块,您将能够从MySQL加载配置)

为了帮助您进行ProFTPd重新编译,您可以运行命令proftpd -V来查看您的版本是如何配置的。您可以找到一些文档here。

一旦编译了ProFTPd服务器并运行它,您就必须登录MySQL服务器。

如果你阅读mod_conf_sql,他们会说创建3个表ftpctxt, ftpconf, ftpmap。除非您想要从MySQL进行全局配置,否则我们不会创建这些表。

我们将使用“视图”来伪造MySQL配置。

用户1.首先,将每个特定配置添加为列(确保有一个默认值):

代码语言:javascript
复制
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 视图:

selects‘s id和configuration列连接在一起,形成唯一的id

  • User's配置列,type

  • User's配置值用作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 VIEW;

视图3.创建 ctxt 视图

userconf- "userconf-“这个视图是"Default”行和user行的串联("Default“行有1作为用户名,user行有user's id +1作为name

  • "IfUser”“
  • -”,user's id作为name
  • “IfUser”as username as id

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 视图

对于conf_id

  • User's,ctxt_id

  • View的
  • User's id和configuration列是串联的id +1是selects的联合(对于每个列,都需要联合)

创建视图ftpuser_map AS SELECT concat (ftpuser.id,'-PathDenyFilter') AS conf_id,(ftpuser.id + 1) AS ctxt_id from联合select concat(ftpuser.id,'-PathAllowFilter') AS conf_id,(ftpuser.id+ 1) AS ctxt_id;

5.将这些行添加到您的ProFTPd配置中

代码语言:javascript
复制
<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 => your MySQL => your MySQL username
  • password MySQL => your MySQL => MySQL=> your MySQL=>

6.重新启动ProFTPd服务器

我希望这能对你有所帮助。祝好运

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16473013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档