首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >符号链接/etc/my.cnf -> /app/program/my.cnf的SElinux配置

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

Unix & Linux用户
提问于 2019-06-12 17:29:52
回答 1查看 776关注 0票数 0

请告诉我,是否有可能配置SElinux上下文,以使MariaDB能够获取它。

目前的配置:

代码语言:javascript
复制
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就不会提取它。

代码语言:javascript
复制
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上下文):

代码语言:javascript
复制
!include /app/program/cfg-ver1/mysql/etc/my.cnf

跑完后:

代码语言:javascript
复制
sudo chcon -t mysqld_etc_t /app/program/cfg/mysql/etc/my.cnf

其结果是:

代码语言:javascript
复制
[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重新启动,但配置文件未得到尊重。

EN

回答 1

Unix & Linux用户

发布于 2019-06-15 18:21:52

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

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

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

您从audit.log中摘录的内容是,您的cfg符号链接具有default_t类型,它不允许在其mysql_t类型下运行的MariaDB。

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

这就是:

代码语言:javascript
复制
sudo chcon -ht mysqld_etc_t /app/program/cfg

如果一切正常工作,您可能希望创建一个(系列) regexp(s)来匹配您的目录,让SELinux始终将这些目录视为MariaDB配置的一部分,以便在您或SELinux最终执行一些(自动)重新标记时不会丢失它们的正确权限。

因此,例如:

代码语言:javascript
复制
semanage fcontext -a -t mysqld_etc_t '/app/program/cfg.*(/.*)?'

包含在/app/program和下面的所有名为D13的东西。

根据您想要的安全程度,您可能希望通过缩小regexp或为该目录下的文件提供更多的semanage fcontext命令来提供更有针对性的配置。

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

https://unix.stackexchange.com/questions/524489

复制
相关文章

相似问题

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