CentOS 7、SELinux、PHP、Apache:如何为目录中的新文件或更新文件设置默认权限?

CentOS 7、SELinux、PHP、Apache:如何为目录中的新文件或更新文件设置默认权限?

服务器信息:

CentOS Linux release 7.0.1406 (Core)  
PHP 5.4.16 (cli) (built: Sep 30 2014 09:44:39)  
SELinux enforcing  
Apache/2.4.6 (CentOS)

我的 PHP 脚本需要从主目录文本文件中读取。这些文件每 30 分钟更新一次。(来自受信任的用户)。

通常,这些文件的权限设置为-rw----r--.上传文件的用户的所有者和组。

现在出现了缺少其他人的读取权限的情况。(我不知道为什么..)并且 PHP 脚本无法读取内容:

file_get_contents(/home/someuser/some_dir/subdir1/subdir2/file.txt): failed to open stream: Permission denied (2)

由于组读取权限也丢失,我不能只将apache用户添加到someuser组。

我只需要确保随时赋予apache进程读取的权限即可。

最好的、最安全的方法是什么?
也许设置umask 173为目录或文件?

答案1

您可以使用 ACL(访问控制列表)来设置额外的组权限,可以使用命令进行设置setfacl。例如:

setfacl -dm g:apache:r /home/someuser/some_dir/subdir1/subdir2

当您在该目录上执行操作时,ls它将+在权限旁边显示一个标志,表明已设置 ACL:

$ ls -ld /home/someuser/some_dir/subdir1/subdir2
drwxrwxr-x+ 2 someuser somegroup 26 Oct 10 10:17 /home/someuser/some_dir/subdir1/subdir2

您可以使用命令查看ACL getfacl

$ getfacl home/someuser/some_dir/subdir1/subdir2
# file: home/someuser/some_dir/subdir1/subdir2
# owner: someuser
# group: somegroup
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:apache:r-x
default:mask::rwx
default:other::r-x

然后,当在那里创建文件和目录时,它们将继承这些权限:

$ cd /home/someuser/some_dir/subdir1/subdir2
$ touch moo
$ getfacl moo
# file: moo
# owner: someuser
# group: somegroup
user::rw-
group::rwx          #effective:rw-
group:apache:r-x        #effective:r--
mask::rw-
other::r--

ACL 太棒了!我强烈建议您进一步了解该主题:

相关内容