CentOS8 Stream - 文件权限中的安全上下文是什么以及它如何影响访问?

CentOS8 Stream - 文件权限中的安全上下文是什么以及它如何影响访问?

在使用 CentOS8 之前,我确实在 Linux 上安装了一些 aspnet core 应用程序。这次我使用了 CentOS8-Stream。我不知道这是否会导致问题。

事实:

  1. 我无法让 Apache 使用证书。一切都和我以前做的一样,但它却不起作用。最后,我在互联网上找到了一些以前ls -lrtZ /etc/pki/tls/certs显示的模糊链接security context(我甚至不知道它的存在)。所以我只是对cp文件进行证书验证,Apache 现在就可以正常工作了。

  2. 但是我的 aspnet 应用程序失败了attempt to write a readonly database。我尝试了这个cp技巧,但没有帮助。也没有出现应用程序日志

数据库文件:

-rw-rw-rw-. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0

我不明白这怎么security context能覆盖常规的类似 chmod 的权限??如何修复它?我的意思是,如何才能获得更明确的权限,例如 rwrwrw ?

这是 SELinux 的新功能吗feature?我可以完全关闭它吗?

注意:1 和 2 无关 - 我只是认为它们具有相同的根本原因,但它们之间没有任何关系。如果我不使用 Apache 直接访问 aspnet 应用程序 - 它会出现相同的错误

答案1

SELinux 是一个基于角色的访问控制系统,可以精确控制进程的权限。例如,当 Web 服务器无法读取(/etc/shadow甚至无法以 root 用户身份读取)或启动 Web shell 时,它会更安全。安全上下文是该系统的基础,自系统诞生之日起就一直存在。

SELinux 文件上下文与 UNIX 权限或扩展 ACL 是分开的。所有权限都必须允许;是的,当基本文件权限指示允许时,selinux 可以拒绝。

阅读RHEL 8 使用 SELinux 手册CentOS wiki 页面上的 SELinux。使用那里的故障排除工具,特别是 sealert -a /var/log/audit/audit.log 检查应用程序出现问题时出现的任何拒绝情况。检查是否存在任何布尔值来切换您想要的行为。

答案2

感谢@John Mahowald,让我找到了看待这个问题的正确角度。

原因的根本在于我之前的所有虚拟机都使用 SELinuxpermissive模式,而新的虚拟机(GCP)正在enforcing模式下运行。

因此,如果您偶然发现无法解释的奇怪效果 - 请参阅 John 的链接。但请先使用sestatus命令查看您的 SELinux 设置为哪种模式。

PS 我决定让它保持宽松,因为强制执行根本无法维持。我认为整个 SELinux 都是无用的。必须更换

相关内容