Debian Lenny 中的访问控制列表

发布于 2024-07-30 07:27:25 字数 580 浏览 12 评论 0原文

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

我为所有集体用户设置了一个 SSH 监狱,因为我真的反对使用单独的 FTP 服务器。 然后,我安装了 ACL 并将 acl 添加到我的 /etc/fstab 中 — 一切顺利。

  1. 我 cd 进入 /homechmod 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.

  1. I cd into /home and chmod 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱你是孤单的心事 2024-08-06 07:27:25

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

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

    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.

夏末 2024-08-06 07:27:25

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

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

可以选择对 /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:

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

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 use

Now Apache and other services will be free to cd /home/foobar/public_html to list files and whatever else a webserver needs.

蒗幽 2024-08-06 07:27:25

由于我交叉发布了这个问题(直到我提出问题之后我才知道 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.

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

chmod and setfacl do not work too well together.

helped a good deal. Instead of using CHMOD to prevent other groups from accessing the data, I used:

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.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文