如何阻止来自用户的访问但不阻止来自 http 的访问?

如何阻止来自用户的访问但不阻止来自 http 的访问?

我的网络文件位于/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 在网络上仍然具有 RX 权限。

我怎样才能阻止 ftpuser 更改这些目录并读取文件,而不阻止通过浏览器访问的用户访问?

笔记- 奇怪的是,我有另一个类似的服务器设置,我只需chmod o-rx在 example.com 文件夹上进行操作,一切仍然可以通过网络访问。

答案1

只需设置网络服务器(apache、www、www-data,无论它在你的发行版上是什么)作为所有者

chown -R apache:root /var/www/html
chmod -R o-rwx /var/www/html/

(这些命令应该准确给出你要求什么。我不确信这是你想要的,因为它拒绝 ftpuser 访问任何文件,甚至与公共服务有一点点关系的文件……

如果您希望 ftp 用户可以访问:/var/www/html/example.com/web/则运行上述命令,然后运行以下命令:

chown -R ftpuser:apache /var/www/html/example.com/web/
chmod -R g+rx /var/www/html/example.com/web/

这些不是完美的权限,但它们应该接近完成工作。(并且您可能必须在所有父目录上授予 ftpuser rx:/var/www/html/example.com/web/

这个问题可能更适合超级用户或 Linux


从您发布的权限来看,我猜您只需要对chown -R apache:root目录进行example.com/操作,然后chmod o-rx剥夺除 Web 服务器(和 root)之外所有人的访问权限。您的最终替代方案涉及扩展属性(如 ntfs 权限)。

答案2

您有几个选择,但如果我对您使用 Apache 的假设正确的话,我会安装 suPHP;如果不是,我希望我的回答能让您走上正确的道路。

它允许您以非 Web 服务器用户身份运行 PHP 脚本。然后您可以告诉 FTP 服务器将用户锁定在他们的 $HOME 中,并将 DocumentRoot 移动到 ftpuser 的主文件夹中。您还没有提到您正在使用哪个 Linux 发行版,但是这是在 Ubuntu 中安装的指南, 和这是适用于 CentOS 6 的

其他选项涉及干扰 ftpuser 的主文件夹位置,出于标准化原因,我会避免这样做 - suPHP 将完美地完成这项工作,并且不会过度干扰您的系统配置。

使用 suPHP 时唯一需要注意的是权限必须 100% 正确,否则会出现服务器错误。我目前无法发布超过 2 个链接,因此只需在 Google 上搜索“修复 suphp 权限”并选择“piyecarane.wordpress.com”页面(目前对我来说是第一个链接)。

相关内容