如何为Web服务器和svn分配正确的权限?

如何为Web服务器和svn分配正确的权限?

我对 unix 中的文件所有权有疑问。

我有一个 drupal 网站,“files”文件夹需要由“www-data”拥有,以便让用户使用 php 上传文件。

不过,我现在使用 svn,并且我需要所有文件夹和文件都归“svnuser”所有才能工作。

所以现在,我想我需要将两个用户添加到具有适当权限的组中。我不确定具体该怎么做,您能告诉我确切的必要步骤是什么吗?

谢谢

答案1

管理此问题的最简单方法是访问控制列表。它们允许为任意数量的用户和组设置权限,而不是像基本的 UNIX 权限那样只为一个用户和一个组设置权限。

需要在文件系统上启用 ACL。使用 ext[234] 或 reiserfs,您需要传递aclmount 选项。另请确保您已安装 ACL 实用程序(aclDebian 或 Ubuntu 上的软件包)。

设置允许两个用户访问文件的 ACL,并在目录上设置匹配的默认 ACL(默认 ACL 由目录中创建的文件继承)。

setfacl -m user:www-data:rwx -m user:svnuser:rwx -R /path/to/directory/tree
setfacl-d -m user:www-data:rwx -m user:svnuser:rwx -R /path/to/directory/tree

如果您愿意,您可以设置不同的权限。如果文件未通过非 ACL 权限(使用 设置的权限chmod)使其可执行,则可执行位将被忽略。

给出的命令适用于 Linux。许多其他 UNIX 变体都支持 ACL,但可用权限的确切集合以及设置它们的实用程序尚未标准化。

如果需要,您可以使用组来控制访问。即使您这样做,ACL 的优点是您不会遇到 umask 问题:如果您只是创建一个组,则必须确保所有文件和目录都是组可写的,这意味着您必须确保任何进程创建文件的 umask 为 002 或 007,这反过来可能会导致其他地方的权限更加自由。因此,即使您创建了一个组,ACL 也很有用。

setfacl -m group:mygroup:rwx -R /path/to/directory/tree
setfacl -d -m group:mygroup:rwx -R /path/to/directory/tree

请注意,我不保证此安全模型是否适合您的用例。我只是提供一个实现。

相关内容