如何配置权限以允许 apache 安全地访问共享环境中的文件?

Ray*_*Ray 5 linux security permissions webserver

在我的学校,我们有一个共享服务器环境,其中包含多个用户和多个组。

相关组:

students

daemon (运行阿帕奇)

我想让学生能够完全访问他们拥有的文件,而不能访问其他学生的文件。两个不同的学生甚至不应该看到彼此的文件。

我还希望 apache 能够读取和执行所有学生文件。具体来说,我希望 apache 能够读取每个学生拥有的密码文件,我还希望密码文件的所有者可以完全访问它。

根据我的理解,最好的方法是将密码文件的组所有者更改为 apache。

所以看完这篇之后,

https://serverfault.com/questions/357108/what-are-the-best-linux-permissions-to-use-for-my-website

似乎一个简单的 chgrp 可以解决它。

但后来我遇到了这个:

您必须是文件的所有者以及目标组(或根)的成员才能使用此操作。

所以每个学生都不是守护进程组的一部分,他们不能运行这个命令。给他们那个组是没有意义的,因为他们也可以看到其他学生的密码文件。

从上一个帖子中,我了解到当前的安全设置不合适,我已安排与我的系统管理员会面。

但我仍然不确定我应该让我的系统管理员做什么。

我真的不能让他手动更改服务器上每个密码文件的权限,文件名和位置不同,许多学生甚至还没有设置。

允许学生完全访问 chgrp 似乎很危险,

我的倾向似乎是要求他创建某种类型的脚本,提示学生输入文件,然后运行 ​​chgrp 代替学生,从而赋予 apache 组所有权。这似乎可行,但也很复杂,因为我对 Linux 还是很陌生。这样的事情,他能轻易做到吗?

我也考虑过 ACL,但我的思路又回到了 chgrp,让学生访问 setacl 似乎很危险。

Gil*_*il' 4

ACL 就是答案。学生不需要任何特殊的权限来运行setfacl,用户可以设置他拥有的任何文件的ACL。

如果您需要为 ACL 设置系统,请参阅使目录中的所有新文件可供组访问

告诉学生,如果他们需要 Apache 可以访问的文件,那么他们必须运行

setfacl -m group:daemon:r ~/path/to/password.file
setfacl -m group:daemon:x ~ ~/path ~/path/to
Run Code Online (Sandbox Code Playgroud)

x访问这些目录中的文件(包括子目录)需要目录的权限。