SELinux、MySQL 和共享内存

SELinux、MySQL 和共享内存

在启用 SELinux 的 Oracle Linux 6 主机上,我有一个使用 MySQL 作为底层数据库的产品,并尝试通过该数据库访问/dev/shm.默认情况下,/dev/shm与 context 一起安装tmpfs_t

当然,mysqld_t没有权利tmpfs_t...

我的看法是,最好的解决方案是授予mysqld_t上下文与 交互的权限tmpfs_t,因为mysqld_tmp_ttmp_t已经可以访问。

不幸的是,这对 SELinux 的影响比大多数文档更深入。大多数提示,包括红帽错误 306351,建议我添加一个安装选项以/dev/shm将其安装为tmp_t.我倾向于反对这一点,因为我认为tmpfs_t适合/dev/shm

那么,如何授予、、、等mysqld_t类型访问 的权限?read()write()getattr()setattr()tmpfs_t

答案1

看起来最好的选择不是手工完成,而是通过更多的 SELinux 自动化。

grep mysqld /var/log/audit/audit.log | grep shm | audit2allow -M mysql_tmpfs

semodule -i mysql_tmpfs.pp

审核2允许(8)手册页说-M参数使用下一个字符串作为新模块名称。在那和之间SE模块(8)手册页中,我想使用尚不存在的模块名称。这样,我就可以避免意外地用我的一次性模块替换更完整的模块。

相关内容