我正在制作一个网站构建器,我有文件render.php
,需要写入用户目录。我不想给每个用户目录都赋予 0777,但我仍然需要能够写入它们。有办法吗?
到目前为止我已经得到:
render
(目录)... 0777render.php
... 777 写入->users
(目录)....... 0777index.php
...777
我想改变这一点以允许 render.php 访问以更改用户的文件,但不允许文件本身执行代码。
答案1
如果我理解正确的话我认为这个程序应该能满足你的要求。
renderusers
为用户目录创建一个组:groupadd renderusers
- 将目录的组更改
user
为 renderusers:chgrp renderusers user
- 将您的 apache 进程(apache 或 www-data)的用户添加到此组:
usermod -G rendergroup -a apache
- 更改目录的权限
user
以包含set group ID
该组,以便该组可以写入和更改文件,并且每个新创建的文件都将归此目录下的组renderusers
所有:renderusers
chmod -R 2770 user
- 重新启动 apache,以便它识别他的新补充组
我假设您将 php 作为 DSO 模块运行,而不是通过 cgi 运行。
答案2
我对 Apache 不够熟悉,无法指导您完成配置网站的过程,但我可以在 Unix 权限级别建议一个答案:
- 定义一个新组(例如
riiich_app
), - 在每个用户的目录上执行
chgrp riiich_app
并chmod 775
(并告诉他们不要改变它),然后 render.php
配置您的 Web 服务器以在组下运行riiich_app
。
答案3
您可以为您的网络服务器的用户名授予 0777 权限。对于 Apache2,即 www-data。不太清楚如何使用 chmod 执行此操作,但您可以chown www-data 777
。