请告诉我,是否有可能配置SElinux上下文,以使MariaDB能够获取它。
目前的配置:
ls -lZ /etc/my.cnf
lrwxrwxrwx. root root system_u:object_r:mysqld_etc_t:s0 /etc/my.cnf -> /app/program/cfg/mysql/etc/my.cnf
ls -lZ /app/program/cfg/mysql/etc/my.cnf
-rw-r--r--. root root system_u:object_r:default_t:s0 /app/program/cfg/mysql/etc/my.cnf
ls -l /app/program/cfg
lrwxrwxrwx. 1 user user 26 Jun 12 16:25 /app/program/cfg -> cfg-ver1(我多次尝试为第二个文件更改上下文,但没有成功)
目前,MariaDB无法使用enforcing来获取它,但它与permissive合作得很好。
UPD:我还尝试在/etc/my.cnf中使用D4指令来包含不同的配置文件,但是如果路径包含上面描述的符号链接,MariaDB就不会提取它。
type=AVC msg=audit(1560419317.130:75): avc: denied { read } for pid=4359 comm="mysqld" name="cfg" dev="xvda1" ino=205 scontext=system_u:system_r:mysqld_t:s0 tcontext=system_u:object_r:default_t:s0 tclass=lnk_file permissive=0
Was caused by:
Missing type enforcement (TE) allow rule.cfg是一个象征性的链接。/etc/my.cnf中的这一行可以工作(使用目标文件的适当Selinux上下文):
!include /app/program/cfg-ver1/mysql/etc/my.cnf跑完后:
sudo chcon -t mysqld_etc_t /app/program/cfg/mysql/etc/my.cnf其结果是:
[root@ip-172-31-60-102 etc]# ls -lZ my.cnf
lrwxrwxrwx. root root system_u:object_r:mysqld_etc_t:s0 my.cnf -> /app/program/cfg/mysql/etc/my.cnf
[root@ip-172-31-60-102 etc]# ls -lZ /app/program/cfg/mysql/etc/my.cnf
-rw-r--r--. root root system_u:object_r:mysqld_etc_t:s0 /app/program/cfg/mysql/etc/my.cnfmariadb重新启动,但配置文件未得到尊重。
发布于 2019-06-15 18:21:52
为了使进程能够访问文件,通向该文件的路径的所有目录都必须具有适当的权限,以允许进程试图读取该文件。对于传统的UNIX权限和对SELinux上下文都是如此。
对于传统的UNIX,“适当的权限”仅意味着目录的x位,而不考虑符号链接的权限。
但是对于SELinux上下文,您需要对符号链接的“读取”权限,就像您需要目录上的“搜索”权限一样。
您从audit.log中摘录的内容是,您的cfg符号链接具有default_t类型,它不允许在其mysql_t类型下运行的MariaDB。
尝试将chcon命令应用于cfg符号链接,该链接是通向.cnf文件的路径的一部分。指定-h参数,使chcon应用于符号链接本身,而不是应用到符号链接所引用的目标。
这就是:
sudo chcon -ht mysqld_etc_t /app/program/cfg如果一切正常工作,您可能希望创建一个(系列) regexp(s)来匹配您的目录,让SELinux始终将这些目录视为MariaDB配置的一部分,以便在您或SELinux最终执行一些(自动)重新标记时不会丢失它们的正确权限。
因此,例如:
semanage fcontext -a -t mysqld_etc_t '/app/program/cfg.*(/.*)?'包含在/app/program和下面的所有名为D13的东西。
根据您想要的安全程度,您可能希望通过缩小regexp或为该目录下的文件提供更多的semanage fcontext命令来提供更有针对性的配置。
https://unix.stackexchange.com/questions/524489
复制相似问题