符号链接 /etc/my.cnf -> /app/program/my.cnf 的 SElinux 配置

符号链接 /etc/my.cnf -> /app/program/my.cnf 的 SElinux 配置

请告诉我是否可以以 MariaDB 会选择的方式配置 SElinux 上下文。

当前配置:

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:我还尝试使用!include指令来/etc/my.cnf包含不同的配置文件,但如果路径包含如上所述的符号链接,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.cnf

mariadb 重新启动,但配置文件未被遵守。

答案1

为了使进程能够访问文件,全部通向该文件的路径的目录必须具有适当的权限,以允许尝试读取该文件的进程。对于传统 UNIX 权限和 SELinux 上下文都是如此。

对于传统UNIX,“适当的权限”仅指x目录的位,而不考虑符号链接的权限。

但对于 SELinux 上下文,您需要符号链接的“读取”权限,就像您需要目录的“搜索”权限一样。

您的摘录audit.log说您的cfg符号链接具有default_t类型,这对于您在其类型下运行的 MariaDB 是不允许的mysql_t

尝试将chcon命令应用于cfg符号链接,该符号链接是通向.cnf文件的路径的一部分。指定-hchcon应用于符号链接本身而不是符号链接引用的目标的参数。

那是:

sudo chcon -ht mysqld_etc_t /app/program/cfg

如果一切按预期工作,您可能需要制作一个(一系列)与您的目录匹配的正则表达式,以使 SELinux 始终将这些目录视为 MariaDB 配置的一部分,以免在您或SELinux 最终执行一些(自动)重新标记。

因此,例如:

semanage fcontext -a -t mysqld_etc_t '/app/program/cfg.*(/.*)?'

包括以下名称的所有cfg*内容/app/program

根据您想要的安全严格程度,您可能希望通过缩小正则表达式的范围或semanage fcontext为该目录下的文件提供其他命令来提供更定制的配置。

相关内容