2009-08-06 76 views
2

因此,对于我的客户端,在我的服务器上托管站点的用户,我使用/ home内的标准主文件夹创建用户帐户。Debian Lenny中的访问控制列表

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

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

如何设置ACL的这样Apache可以看到用户的主文件夹和2.用户托管他们的家之外,进入别人的文件不能看到网站。我已经在共享盒使用

回答

2

由于I交叉张贴的问题(我不知道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

一个窍门是:

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

    chmod -R o-rwx /home/*

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

    chmod o+x /home/*

  • 更改每个用户的public_html目录组www数据(或者你的Apache组)

    chgrp命令www数据/家庭/ * /的public_html

  • 改变所有的目录在/ home/*/public_html被设置为

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

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

+0

我可以看到它是如何工作的,但我不喜欢/ home/joeuser/joeuser.com文件夹被除joeuser:collective以外的其他任何东西所拥有的想法。 – arbales 2009-08-16 04:36:06

1

我做这件事,假设所有用户是“用户”组中的典型方式:

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

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

中获取几乎相同的列表。现在,用户组中的每个人都将被拒绝访问所有homedirs(除他们自己之外)。非用户成员(如Apache和其他服务)仍然能够进入家庭,但不能做ls。

chmod 755 /home/*/public_html < - 替换任何WWW路径使用

现在Apache和其他服务将免费CD /家庭/ foobar的/的public_html列出文件和其他任何一个网络服务器的需求。