我的网络文件位于/var/www/html/example.com/web/
权限是:
drwxr-xr-x 20 root root 4096 Aug 13 18:22 var
... same for www and html ...
drwxr-xr-x 4 root root 4096 Aug 13 18:22 example.com
drwxr-xr-x 10 apache root 4096 Aug 13 18:22 web
我有一个 FTP 用户“ftpuser”,但我不希望他们能够访问其中的任何文件/var/www/html/
但是,如果我尝试chmod o-rx
使用任何父级文件夹,它会给出 403 Forbidden 错误,即使用户 Apache 在 web 上仍然具有 RX 权限。
如何阻止 ftpuser 更改到这些目录并读取文件,而不阻止通过浏览器访问的用户访问?
注意- 奇怪的是我有另一个类似的服务器设置,我只是chmod o-rx
在 example.com 文件夹中进行了设置,并且所有内容都可以通过网络访问。
你有几个选择,但我要做的是安装 suPHP,如果我假设你使用的是 Apache 是正确的;如果没有,我希望我的回答能让你走上正确的道路。
它允许您以非 Web 服务器用户的身份运行 PHP 脚本。然后,您可以告诉 FTP 服务器将用户锁定在他们的 $HOME 中,并将 DocumentRoot 移动到 ftpuser 的主文件夹中。您没有提到您使用的是哪个 Linux 发行版,但这里是在 Ubuntu 中安装的指南,这里是 CentOS 6的指南。
其他选项涉及弄乱 ftpuser 的主文件夹位置,出于标准化原因,我会避免它 - suPHP 将完美地完成这项工作,并且不会过度弄乱您的系统配置。
使用 suPHP 唯一需要注意的是权限必须 100% 正确,否则您将收到服务器错误。我还不能发布超过 2 个链接,所以只需谷歌“修复 suphp 权限”并选择“piyecarane.wordpress.com”页面(目前我的第一个链接)。
只需设置网络服务器(apache,www,www-data,无论您的发行版中的所有者是什么)
(这些命令应该完全符合您的要求。我不相信这是您想要的,因为它拒绝 ftpuser 对任何文件的任何访问,即使是与公共服务远程相关的任何文件......
如果您希望 ftp 用户可以访问:
/var/www/html/example.com/web/
然后运行上述命令,然后运行以下命令:这些不是完美的权限,但它们应该接近完成工作。(并且您可能必须在以下所有父目录上授予 ftpuser rx:
/var/www/html/example.com/web/
这个问题可能更适合超级用户或 linux
根据您发布的权限,我猜您只需要访问
chown -R apache:root
该example.com/
目录,然后就chmod o-rx
可以剥夺除网络服务器(和根)以外的所有人的访问权限。您的最终选择涉及扩展属性(如 ntfs 权限)。