调试与Docker相关的selinux问题,我意识到Docker没有正确的权限来写入主机卷:/ opt / var / games。我运行此命令为Docker代理提供了正确的权限:
sudo chcon -Rt svirt_sandbox_file_t /opt/var/games/
这似乎有效,但是当我尝试检查文件规则列表时,该规则不在那里:
sudo semanage fcontext --list | grep games | grep opt
我希望看到规则映射svirt_sandbox_file_t到/ opt / var / games /但它不在那里。应该是吗?我是否误解了fcontext --list
应该返回的内容?
答案 0 :(得分:0)
使用chcon
手动更改文件和目录的标签。但是文件上下文与活动策略规则无关,可以由restorecon
还原,或者通过fixfiles
强制重新启动所有文件。
如果您需要永久标签,则必须创建新的策略规则来设置文件上下文(您必须先安装SELinux开发包):
cat opt-var-games.te
policy_module(优化-VAR-游戏,0.0.1)
cat opt-var-games.fc
/选择的/ var /游戏(/.*)? gen_context(system_u:object_r:svirt_sandbox_file_t,S0)
make -f /usr/share/selinux/devel/Makefile
semodule -i opt-var-games.pp
现在测试新规则:
touch /opt/var/games/file
ls -lZ /opt/var/games/
-rw-R - R--。 1 root root unconfined_u:object_r:usr_t:SystemLow 0 Aug 12 00:50 file
好的,缺少文件上下文,请将其恢复:
restorecon -vFR /opt/var/games/
restorecon reset / opt / var / games / file context unconfined_u:object_r:usr_t:s0-> system_u:object_r:svirt_sandbox_file_t:s0
ls -lZ /opt/var/games/
-rw-R - R--。 1 root root system_u:object_r:svirt_sandbox_file_t:SystemLow 0 Aug 12 00:50 file
最后检查文件上下文作为SELinux策略的一部分:
semanage fcontext --list | grep games | grep opt
/选择的/ var /游戏(/.*)?所有文件system_u:object_r:svirt_sandbox_file_t:s0