我已经构建了 Rocky Linux (9.1) 虚拟机,但我遇到了某些文件的权限问题。另请注意(查看链接的“类似问题”后),这是本地挂载,而不是 NFS 或任何远程挂载。
文件的匿名权限是这样的:
-r--r--r--. 1 engineer myadmin <filesize> <date> filename.jar
对于 SE Linux 环境:
unconfined_u:object_r:defailt_t:s0 filename.jar
id
为用户 运行提供以下输出:uid=1001(engineer) gid=1002(myadmin) groups=1002(myadmin),1001(engineer) context=unconfirmed_u:unconfirmed_r_unconfirmed_t:s0
任何读取该文件的尝试都会遇到:
cannot open 'filename.jar' for reading: Operation not permitted
我尝试查看文件权限、安装选项、SE Linux 权限和用户组。我希望用户engineer
应该能够读取该文件。
驱动器的安装选项有:
rw,seclabel,relatime
所有读取文件的尝试都会导致Operation not permitted
.
我缺少什么?
根据评论中的要求提供附加信息:
得出的结果journalctl -n 100
是:
<timestamp> <hostname> login[<pid>]: pam_unix(login:session): session opened for user engineer(uid=1001) by engineer(uid=0)
<timestamp> <hostname> login[<pid>]: LOGIN ON pts/1 BY engineer
dmesg
不提供有关尝试打开文件的信息。
SE Linux 已存在,但处于permissive
模式中,因此无论如何不应限制任何内容。
答案1
它并没有selinux
阻止访问,但是fapolicyd
。具体来说,这是一条规定deny_audit perm=any all: ftype=application/java-archive
解决方案:
systemctl stop fapolicyd
(禁用文件访问策略应用)- 运行
fapolicyd --debug-deny
(显示不允许的访问) - 尝试打开先前指示的文件
Operation not permitted
- 观察它违反了哪一条规则
- 仔细阅读 的联机帮助页
fapolicy.rules(5)
,并构建一个新的规则文件,允许组或用户打开 java 档案(.jar
文件)以及 java 小程序(.class
文件) - 运行
fagenrules --load
以安装新创建的规则 - 停止并重新启动
fapolicy --debug-deny
- 尝试打开与上面相同的文件,并实际打开它(没有记录规则)
- 欢呼或握拳,表明我知道如何解决我的问题(此步骤是可选的)
fapolicyd
使用命令重新启动systemctl enable --now fapolicyd