我的 cms 上有一个使用 POST(php)的上传功能。一切正常,但目录需要设置为 777,否则会出现错误。
我想将其降低到 644。我该怎么做?
这个设置会在 httpd.conf 中吗?
答案1
确保 Apache (httpd) 拥有该目录。这样 Apache 就可以将文件放在那里,而不需要 777 整个目录。
使用chown -R apache:apache /path/to/upload/dir
编辑:正如 cyberx86 指出的那样,实际的 PHP 进程将执行文件写入操作。因此,PHP 用户需要拥有目录的所有权才能设置更严格的权限。与 Apache 配对时,PHP 实例通常是父 Apache 进程的子进程。
答案2
我认为最好的方法是使用 acl。您可以让 nobody:nobody 拥有目录,然后让运行应用程序的用户拥有完全的读写权限。
这将删除组中具有访问权限的其他人。它将删除“其他”访问权限
chown nobody:nobody /path/to/folder
然后删除“其他”查看文件夹的能力。
chmod o-rx /path/to/folder
然后授予任何用户写入权限来读/写/执行该文件夹。
setfacl -m "u:apache:rwx"
setfacl -m "u:yournormaluser:rwx"
然后将 acl 选项添加到 fstab。
然后重新挂载。
mount -o remount /var