2

因此,对于在我的服务器上托管网站的客户,我创建用户帐户,并在 /home 中使用标准主文件夹。

我为所有用户设置了一个 SSH 监狱collective,因为我真的反对使用单独的 FTP 服务器。然后,我安装了 ACL 并将 acl 添加到我的/etc/fstab- 一切都很好。

  1. 我 cd 进入/homechmod 700 ./*.
    • 此时用户无法看到其他用户的主目录(耶),但 apache 也无法看到它们(嘘)
    • . 我跑了setfacl u:www-data:rx ./*。我还尝试了单个目录。
    • 现在 apache 可以再次看到这些站点,但所有用户也可以。ACL 将主文件夹的权限更改为750.

我如何设置 ACL 以便 Apache 可以看到托管在用户主文件夹中的站点和 2. 用户不能看到他们家之外和其他人的文件。

4

3 回答 3

2

由于我交叉发布了这个问题(直到我询问后我才知道 ServerFault),我将交叉发布答案,因为我个人认为这个问题适合两个社区。

hayalci(在 ServerFault 上)评论说

chmod 和 setfacl 不能很好地协同工作。

帮了大忙。我没有使用 CHMOD 来阻止其他组访问数据,而是使用:

cd /home
setfacl -m g::0 joeuser # Removes permissions for the owning group.
setfacl -m g:www-data:r joeuser # Adds read permissions for Apache
cd joeuser/joeuser.com/static/
setfacl -m g:www-data:rwx uploads # So apache can write to the uploads directory.
于 2009-08-16T04:14:25.343 回答
1

我在共享盒子上使用的一个技巧是:

  • 递归地将主目录的内容设置为不允许访问“其他”用户

    chmod -R o-rwx /home/*

  • 将所有顶级用户的主目录权限设置为可由“其他”用户执行

    chmod o+x /home/*

  • 将每个用户的 public_html 目录组更改为 www-data (或您的 apache 组)

    chgrp www-data /home/*/public_html

  • 将 /home/*/public_html 下的所有目录更改为 setgid

    查找 /home/user/public_html -type d -exec chmod 2750 {} \;

不要将任何用户添加到 www-data(或 apache 组)。即使他们不是成员,setgid 技巧仍然会让文件被 apache 读取。它不是完全证明的(移动文件并不总是改变组所有者,有时如果在移动之前存在其他用户权限),但它确实适用于我的盒子。希望这有所帮助!也许其他人会有更好的解决方案。

于 2009-08-16T01:40:39.033 回答
1

我的典型做法是,假设所有用户都在“用户”组中:

chmod 701 /home/*
chgrp users /home/*

可选择对 /home 本身执行相同操作,以防止用户看到主目录列表。但是,他们可以从 /etc/passwd 或getent passwd

现在用户组中的每个人都将被拒绝访问所有主目录(除了他们自己的)。非会员用户(如 Apache 和其他服务)仍然可以 cd 进入 homedirs,但无法执行 ls。

chmod 755 /home/*/public_html <- 替换为您使用的任何 www 路径

现在 Apache 和其他服务将可以免费使用 cd /home/foobar/public_html 来列出文件以及网络服务器需要的任何其他内容。

于 2010-11-15T09:41:19.250 回答