无法以 root 身份更改 root 拥有的文件的权限

无法以 root 身份更改 root 拥有的文件的权限

问题是我的 PHP 文件无法在浏览器中运行。我怀疑是因为用户缺少read权限。

这些文件位于名为“ajax”的目录中

drwxrwxrwx. 2 root root 4096 Sep 13 14:33 ajax

该目录的内容:

-rwxrwxrwx. 1 root root 13199 Sep 13 14:33 getOrderDeliveryDates.php
-rwxrwxrwx. 1 root root 20580 Sep 13 14:33 getParcelShops.php
-rwxrwxrwx. 1 root root  1218 Sep 13 14:33 index.php
-rwxrwxrwx. 1 root root   814 Sep 13 14:33 lang.php
-rwxrwxrwx. 1 root root  6001 Sep 13 14:33 prod_reviews.php

我 100% 确定以 root 身份登录:

[root@accept: nl (MP-git-branch)] $

使用命令仔细检查id

uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

这让我发疯。

尝试过 sudo (尽管我已经是 root 了)。

sudo chmod 777 filename

尝试过 chown (尽管我已经是所有者 root)。

 sudo root filename

根本没有错误或警告。

操作系统是CentOS 6

答案1

CentOS(以及其他 Fedora/RHEL 衍生产品)启用了称为 SELinux 的附加安全机制。它对大多数系统守护程序应用额外的限制。这些附加限制是在常规 UNIX 权限之后检查的。

对于非默认配置,您经常需要调整 SELinux。文件包含特定的安全标签,SELinux 使用该标签来应用安全策略。如果您的问题仅出现在某些文件上,则需要更正有问题文件上的 SELinux 标签。使用chcon可以--reference=选择从文件中复制标签,该标签可以在有问题的文件上应用相同的标签:

chcon --reference=<path to working file> <path to not working file(s)>

如果您的文件位于非标准位置,您应该在文件标签数据库中添加一条规则。这可以避免下次重新标记或restorecon使用文件系统时出现问题。选择标签适当地或使用已应用的标签(使用 检查现有的安全标签ls -lZ)。

使用以下命令添加标签规则/path/to/directory及其内容semanage

semanage fcontext -a -t httpd_user_rw_content_t '/path/to/directory(/.*)?'

如果您的文件位于不同的文件系统上,您可以使用context选项用于安装点应用/覆盖默认标签。

相关内容