我是服务器管理的初学者。
我正在使用 class.upload.php 库,以便用户可以从我的网站上传文件。为此,我给出了一个完整路径,例如: uploads/gifs/90/x.gif 该路径在我的服务器上不存在,但我想创建它。
我的 php 日志返回给我:PHP Warning: mkdir (): Permission denied
如果在我的服务器上以 root 用户身份创建具有权限的上传文件夹777
,则库在上传文件时会正确创建路径的其余部分。用户 apache 拥有 gifs/90/x.gif
从上面可以看出,apache用户对html文件夹没有写权限。在etc/groups中我看到apache属于该组:
nagcmd: x: 503: nagios, apache
服务器上的 web 文件夹具有以下权限:
drwxr-xr-x 32 root root 4096 Feb 4 17:20 html
我希望库能够自动在 html 文件夹中创建目录。最好的方法是什么?
在html/中给其他人分配写权限:
drwxr-xr-wx 32 root root 4096 Feb 4 17:20 html
仅向 nagcmd 组授予权限,以便它可以写入 html/ (我不知道该怎么做)
其他的
我不想损害网络的安全。
预先非常感谢
答案1
这将取决于您的系统。但很可能您有一个名为 的用户和组www-data
,服务器以该用户和组运行。
CAP_CHOWN
只有您有能力(您是 root)才能更改用户。您可以将文件添加到组中www-data
,但您必须先要求管理员将您添加到该组中。
如果您没有能力CAP_CHOWN
,那么您可以使用文件访问控制列表。
setfacl -R -m "g:www-data:rwX" "directory-name"
您可能需要为文件系统启用访问控制列表。但这是最安全的方式,因为它不需要提升权限(除了在 FS 上一次性启用)。