当我跑步时审核2个原因查看尝试通过 SCP 将文件上传到文件夹时失败的原因/foo/酒吧在远程服务器上,这会导致拒绝访问文件夹 /foo/bar,我得到以下文本:
Was caused by:
Unknown - would be allowed by active policy
Possible mismatch between this policy and the one
under which the audit message was generated.
Possible mismatch between current in-memory
boolean settings vs. permanent ones.
我知道这肯定是由SELinux当我运行命令时:
setenforce 0
我可以通过 SCP 将文件上传到/foo/酒吧。另外值得注意的是,如果我通过 SSH 登录并光盘到文件夹/foo/酒吧启用 SELinux 后,我可以在此文件夹中创建一个文件。
我如何调试以查看 SELinux 中到底是什么导致了问题?
编辑
ls -lZ
这是的输出/foo/酒吧
drwxrwx--T. root foo-users user_u:object_r:default_t:s0 bar
和一个的输出AVC 拒绝从audit2allow
type=AVC msg=audit(1519304988.434:6984): avc: denied { write } for pid=26506 comm="scp" name="event-20180203.log.gz" dev="dm-4" ino=7260 scontext=user_u:user_r:user_t:s0 tcontext=user_u:object_r:default_t:s0 tclass=file
Was caused by:
Unknown - would be allowed by active policy
Possible mismatch between this policy and the one under which the audit message was generated.
答案1
AVC 说的:
$ echo "type=AVC msg=audit(1519304988.434:6984): avc: denied { write } for pid=26506 comm="scp" name="event-20180203.log.gz" dev="dm-4" ino=7260 scontext=user_u:user_r:user_t:s0 tcontext=user_u:object_r:default_t:s0 tclass=file" |audit2allow
#============= user_t ==============
#!!!! WARNING: 'default_t' is a base type.
allow user_t default_t:file write;
==> 在 user_t SElinux 上下文类型中运行的进程正在尝试写入具有 default_t 类型的目录。
解决此问题的替代方法是:
重新标记目标目录以允许 user_t 对其进行写入:
$ sesearch -s user_t --allow |grep “文件。*写入”
将显示文件写入操作允许的目标上下文。例如,foo/bar 可能会被重新标记为允许列表中的 ssh_home_t:
$ sudo chcon -R -t ssh_home_t /foo/bar
或者,如果可以的话,将目标目录更改为允许的目录。
或者使用audit2allow创建新规则来绕过控制,但这会打开权限,破坏了SELinux的目标,所以应该是最后的选择。 '看http://selinuxproject.org/page/Audit2allowRecipe)
答案2
Unknown - would be allowed by active policy
Possible mismatch between this policy and the one
under which the audit message was generated.
应用纠正政策后,我收到了同样的消息。所有先前审计的 avc 都无法解释,因为新政策将允许它们。
检查是否仍发生新事件。