`chcon`的结果没有显示在`semanage fcontext --list`中

时间:2015-07-28 14:16:51

标签: selinux

调试与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应该返回的内容?

1 个答案:

答案 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