Debian Lenny中的访问控制列表

时间:2009-08-06 23:16:16

标签: permissions apache2 debian acl chroot

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

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

  1. 我进入/homechmod 700 ./*
    • 此时用户无法看到其他用户的主目录(yay),但apache也看不到它们(嘘)
    • 。我跑了setfacl u:www-data:rx ./*。我也试过了各个目录。
    • 现在apache可以再次看到这些网站,但所有用户也可以看到。 ACL将主文件夹的权限更改为750
  2. 如何设置ACL,以便Apache可以查看托管在用户主文件夹中的网站.2。用户无法在家外看到其他人的文件。

3 个答案:

答案 0 :(得分: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.

答案 1 :(得分: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

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

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

答案 2 :(得分:1)

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

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

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

中提取几乎相同的列表

现在,用户组中的每个人都将被拒绝访问所有homedirs(除了他们自己的)。非用户成员(例如Apache和其他服务)仍然能够进入homedirs,但无法做到ls。

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

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