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

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

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

相关团体:

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 似乎很危险。

答案1

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

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

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

setfacl -m group:daemon:r ~/path/to/password.file
setfacl -m group:daemon:x ~ ~/path ~/path/to

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

相关内容