当我运行ls -l
该www
文件夹及其中的所有内容时,我看到 root:root 是所有者/组
当我运行时ps aux | grep apache2
,我得到了第一个由 root 拥有的进程(我认为这是正常的,但为什么它由 root 拥有而不是 www-data 拥有?)并且我得到了由 www-data 拥有的另外 6 个进程。
现在,由于ls -l /var/www
显示-rw-r--r--
,它应该意味着www-data
没有写权限,因为它在“世界”中(也不在“根”组中)。
但是,如果在我的 Web 应用程序中,用户可以上传图像,我想里面应该有一个/www
名为“uploadedpics/”的文件夹www-data
,并且对该文件夹具有写权限,对吗?
因此,如果用户和组root:root
属于/www
文件夹,我如何创建www-data
可以写入的子目录?
非常感谢你的帮助
答案1
第一个由 root 拥有的 Apache 进程是 Linux 早期计算的产物,其中 root 用户是唯一可以绑定到 1024 以下端口的帐户。提供内容的进程在 www 用户下运行。
要允许对文件夹的写访问,请将所有者或组更改为 www 用户并执行 chmod 775 或类似操作。
答案2
您可以将新文件夹组更改为 www-data ( sudo chgrp www-data <your-folder>
),并授予该组 w 权限 ( sudo chmod g+w <your-folder>
)。
另一种方法(我更喜欢)是使用 ACL(man setfacl
如果您想这样做,请了解更多详细信息)。