我正在尝试设置一个环境,让多个用户可以在一个网站项目上工作。此外,每个人都应该能够为 apache 授予额外的写入权限。
这个想法是每个人都使用单独的登录名(假设它是joe
,jane
并且mark
属于 组users
)。Apache 以 的身份运行apache:www
。每个人都必须拥有所有文件的写入权限,而 Apache 只具有读取权限。现在,用户选择的文件必须可由 Apache 写入(重要的是 Apache 不能拥有所有文件的写入权限 — 出于安全考虑)。
我尝试了两种设置,一种使用 ACL-s,一种使用 umask、普通组等。两者都有相同的缺陷——用户无法更改 apache 的写权限。
我尝试过的两种方法:
setfacl -m default:group:users:rwx project/
这样,我可以轻松管理所有用户的写入权限。无需额外设置,直接使用即可。无论文件所有者是谁,团队中的每个用户都可以修改文件。不幸的是,只有文件所有者才能添加写入权限
apache
umask 0002
中.bashrc
,同一组内的所有用户基于简单权限,每个用户都拥有对所有文件的读写权限。Apache
chgrp www ...
需要具有写入权限。同样 — 只有文件所有者才能执行此操作。
因此,我基本上正在寻找一种方法来授予多个用户对文件执行操作的权限g+w
。我想到了其他方法,例如:
- bash 脚本用于更改权限,由 sudo 运行。可以工作,但这是一个安全问题。对我来说,限制它仅访问项目目录相当复杂。即使我这样做,递归模式等也会很复杂。
- 目录结构如下:
- /project/www - apache htdocs (
setfacl -m d:group:users:rwx
) - /project/data-可由 apache 写入(
setfacl -m d:user:apache:rwx
) - 目录中的所有内容都
./www
必须可由 写入apache
,必须在 中创建./data
并进行符号链接 — — 但这既不优雅也不方便
- /project/www - apache htdocs (
所以我正在寻找一种易于使用的解决方案。初始设置可能很复杂,但日常使用应该不会很复杂。有什么建议吗?
答案1
没有什么可以让非所有者、非 root 用户更改文件权限。我会使用 sudo 脚本——不过我不明白这有什么难的。使用readlink -f
规范化要更改的文件名,以便您可以检查它的前缀是否正确,不要让用户实际指定权限,只需将其设为“授予 Apache 写访问权限”脚本。