我在我们的系统上创建了一个 SSH 用户,fred
其主目录为/home/fred
,其子目录为/home/fred/someFolder
。我试图允许以 身份运行的 PHP/Apachenobody
在 fred 的目录中创建一个文件someFolder
。无论我怎么尝试,我总是得到Warning: file_put_contents(/home/fred/someFolder/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/websiteDir/public_html/test.php on line 1
我尝试了几种不同的方法,但似乎都不起作用。尝试将文件夹的权限修改为 777、666、660 等。尝试使用 fred:nobody、nobody:fred、nobody:nobody、fred:fred 进行权限修改,仍然无效。尝试将 fred 添加到 nobody 的组中,尝试将 nobody 添加到 fred 的组中,但无效。
抱歉,我不太擅长 Linux...如能提供任何建议我将不胜感激。
答案1
/home/fred/someFolder 的所有父目录都必须为访问它的用户/组设置执行位。因此,/home/fred 很可能缺少这个权限。chmod a+x /home/fred
答案2
检查 SELinux 是否在强制模式下运行。如果是这样,它可能会导致权限问题,而您看到和设置的实际 UNIX 文件权限似乎不支持这些问题。您可以使用getenforce
(至少在 Redhat/CentOS 上)查看 SELinux 的状态,并setenforce 0
以交互方式禁用它。为了使更改持久,您需要在 中编辑 SELinux 配置/etc/selinux/config
。希望对您有所帮助!