Debian Lenny 中的访问控制列表
因此,对于在我的服务器上托管网站的客户,我创建用户帐户,并在 /home 内使用标准主文件夹。
我为所有集体
用户设置了一个 SSH 监狱,因为我真的反对使用单独的 FTP 服务器。 然后,我安装了 ACL 并将 acl 添加到我的 /etc/fstab
中 — 一切顺利。
- 我 cd 进入
/home
和chmod 700 ./*
。- 此时用户无法查看其他用户的主目录(是的),但 apache 也无法看到它们(嘘)
- 。 我运行了
setfacl u:www-data:rx ./*
。 我还尝试了单独的目录。 - 现在 apache 可以再次看到这些站点,所有用户也可以。 ACL 将主文件夹的权限更改为
750
。
如何设置 ACL,以便 Apache 可以查看用户主文件夹中托管的站点,并且 2. 用户无法查看其主目录之外的内容以及其他人的文件。
So, for my clients to who have sites hosted on my server, I create user accounts, with standard home folders inside /home.
I setup an SSH jail for all the collective
users, because I really am against using a separate FTP server. Then, I installed ACL and added acl to my /etc/fstab
— all good.
- I cd into
/home
andchmod 700 ./*
.- At this point users cannot see into other users home directories (yay), but apache can't see them either (boo)
- . I ran
setfacl u:www-data:rx ./*
. I also tried individual directories. - Now apache can see the sites again, but so can all the users. ACL changed the permissions of the home folders to
750
.
How do I setup ACL's so that Apache can see the sites hosted in user's home folders AND 2. Users can't see outside their home and into others' files.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我在共享盒子上使用的一个技巧是:
递归地将主目录的内容设置为不允许“其他”用户访问
chmod -R o-rwx /home/*
将所有顶级用户的主目录权限设置为“其他”用户可执行
chmod o+x /home/*
将每个用户的 public_html 目录组更改为 www-data (或您的 apache 组)
chgrp www-data /home/*/public_html
更改所有目录在 /home/*/public_html 下设置gid
find /home/user/public_html -type d -exec chmod 2750 {} \;
将
不要将任何用户添加到 www-data(或 apache 组)。 即使它们不是成员,setgid 技巧仍然会使文件被 apache 读取。 它不是完全可靠的(移动文件并不总是会更改组所有者,有时如果移动之前存在其他用户权限,则会保留),但它确实适用于我的盒子。 希望这有所帮助! 也许其他人会有更好的解决方案。
One trick I've used on shared boxes is to:
recursively set the contents of the home directories to not allow access to "other" users
chmod -R o-rwx /home/*
set all the top-level user's home directories permissions to be executable by "other" users
chmod o+x /home/*
change each user's public_html directory group to www-data (or your apache group)
chgrp www-data /home/*/public_html
change all the directories under /home/*/public_html to be setgid
find /home/user/public_html -type d -exec chmod 2750 {} \;
Don't add any of the user's to the www-data (or apache group). Even though they aren't members, the setgid trick will still make the files readable by apache. It's not fullproof (moving files does not always change group owner and sometimes the other user permissions are left if present before a move) but it does work on my box. Hope this helps a little! Maybe someone else will have a better solution.
我的典型做法是,假设所有用户都在“users”组中:
可以选择对 /home 本身执行相同操作,以防止用户看到主目录列表。 但是,他们可以从 /etc/passwd 或 getent passwd 中提取几乎相同的列表。
现在,用户组中的每个人都将被拒绝访问所有 homedir(除了他们自己的)。 非成员用户(例如 Apache 和其他服务)仍然可以 cd 进入 homedirs,但无法执行 ls。
chmod 755 /home/*/public_html
<- 替换为您使用的任何 www 路径现在 Apache 和其他服务将可以自由地 cd /home/foobar/public_html 来列出文件以及网络服务器需要的任何其他内容。
My typical way of doing it, assuming that all users are in the "users" group:
Optionally do the same on /home itself to prevent users from seeing a list of home directories. However, they can pull almost the same list from /etc/passwd or
getent passwd
Now everyone in the users group will be denied access to all homedirs (except their own). Non-members of users (such as Apache and other services) will still be able to cd into the homedirs, but will be unable to do ls.
chmod 755 /home/*/public_html
<- Replace with whatever www path you useNow Apache and other services will be free to cd /home/foobar/public_html to list files and whatever else a webserver needs.
由于我交叉发布了这个问题(直到我提出问题之后我才知道 ServerFault),我将交叉发布答案,因为我个人认为这个问题适合两个社区。
hayalci(在 ServerFault 上)评论说
帮了很大忙。 我没有使用 CHMOD 来阻止其他组访问数据,而是使用:
Since I cross-posted the question (I didn't know about ServerFault until after I asked), I'll cross-post the answer, since I personally find the question to be appropriate for both communities.
hayalci's (on ServerFault) comment that
helped a good deal. Instead of using CHMOD to prevent other groups from accessing the data, I used: