proftpd 正在访问 my.cnf

proftpd 正在访问 my.cnf

我使用 proftpd 和 MySQL 进行虚拟 FTP 托管。

我已经开始编写细粒度的 SELinux 策略,并发现它正在尝试访问 my.cnf 文件。

问题是,为了什么以及为什么?

type=AVC msg=audit(1378191337.059:153431): avc:  denied  { getattr } for  pid= comm="proftpd" path="/etc/my.cnf" dev="dm-1" ino=1180081 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:mysqld_etc_t:s0 tclass=file
type=AVC msg=audit(1378191337.059:153432): avc:  denied  { read } for  pid=50590 comm="proftpd" name="my.cnf" dev="dm-1" ino=1180081 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:mysqld_etc_t:s0 tclass=file
type=AVC msg=audit(1378191337.059:153432): avc:  denied  { open } for  pid=50590 comm="proftpd" path="/etc/my.cnf" dev="dm-1" ino=1180081 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:mysqld_etc_t:s0 tclass=file

的输出ps auxwf|grep 50590现在为空 - 进程不再存在。看起来每次登录尝试时它都会尝试这样做。

更新: 已提交错误/功能请求,开发人员提交的补丁: http://bugs.proftpd.org/show_bug.cgi?id=3971

答案1

补充一下,源代码也提到了这一点:

我检查了最近的快照。具体来说,proftpd-cvs-20130903/contrib/mod_sql_mysql.c

485   /* Make sure the MySQL config files are read in.  This will read in
486    * options from group "client" in the MySQL .cnf files.
487    */
488   mysql_options(conn->mysql, MYSQL_READ_DEFAULT_GROUP, "client");

答案2

链接 libmysqlclient 的 MySQL 客户端读取全局选项来自[client]的部分/etc/my.cnf。这是此类客户端的典型行为,并且ProFTPD 就是这样的客户端当您使用它的 MySQL 模块时。

SELinux 布尔值ftpd_full_access将允许此访问,但它也会有效地禁用整个 FTP 守护进程的操作的 SELinux,因此不应在没有极其谨慎的情况下使用它。

如果是我的话,我会提出一个功能请求,反对selinux-policy请求添加布尔值以允许添加此访问权限,或者将其添加到ftpd_connect_db布尔值中。

答案3

来自文档之外

问题:如何配置mod_sql才能使用加密连接(例如是否将 SSL/TLS 连接到后端数据库服务器?
回答:如果您使用的是 MySQL,那么您可以在[客户]配置文件的部分my.cnf

这就是为什么 proftpd 尝试读取 /etc/my.cnf

相关内容