我遇到了与服务器上目录的权限有关的问题。文件权限最初读取drwx--S---
,并且我能够与以目录所有者身份登录的 FTP 客户端连接并管理目录,但是当我尝试从浏览器查看它们时,我收到“禁止”消息,指出我没有权限查看文件。我注意到如果我使用
sudo chmod -R 644 my_directory
它将目录的权限更改为drw-r-Sr--
然后使用
sudo chmod g+x my_directory
将目录的权限更改为drw-r-sr--
,我可以从任何浏览器读取文件,但无法再通过 FTP 传输或查看文件到该目录。
答案1
根据你的问题,我将做出一个假设。 Web 服务器进程与目录的组所有权位于同一组中。
您从目录权限中删除了执行 (x) 位,只将其返还给组。这意味着该目录所有者没有执行权限,并且需要能够更改/遍历目录。由于这个原因,使用具有绝对权限的 chmod -R 可能会很危险。我建议您执行以下操作:
修复您的目录权限。
sudo find my_directory -type d -exec chmod 2750 {} \;
由于您破坏了目录遍历,因此您可能需要多次执行此操作。如果您在运行上述命令时收到任何权限错误,请重新运行它,直到这些错误清除。
修复您的文件权限。
sudo find my_directory -type f -exec chmod 0640 {} \;
完成此操作后,您的目录应具有以下权限。
drwxr-s---
并且您的文件应该具有以下权限。
-rwxr-x---
如果您想更好地了解 UNIX 权限,我建议您阅读人 2 chmod。这当然是枯燥的阅读,但它解释了每一位的含义。