Debian Lenny 中的访问控制列表

Debian Lenny 中的访问控制列表

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

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

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

我如何设置 ACL 以便 Apache 可以看到用户主文件夹中托管的站点,并且 2. 用户无法看到自己主文件夹之外的内容和其他人的文件。


编辑:更多详细信息:

输出结果chmod -R 700 ./*

sh-3.2# chmod 700 ./*
sh-3.2# ls -l
total 72
drwx------+ 24 austin  austin     4096 Jul 31 06:13 austin
drwx------+  8 jeremy  collective 4096 Aug  3 03:22 jeremy
drwx------+ 12 josh    collective 4096 Jul 26 02:40 josh
drwx------+  8 joyce   collective 4096 Jun 30 06:32 joyce

(其他用户或 Apache 无法访问)

setfacl -m u:www-data:rx jeremy

(现在成员 apache 和 collective 也可以访问 —— 为什么 collective 也可以访问?)

sh-3.2# getfacl jeremy 
# file: jeremy
# owner: jeremy
# group: collective
user::rwx
user:www-data:r-x
group::r-x
mask::r-x
other::---

解决方案

最终我所做的是:

chmod 755 *
setfacl -R -m g::--- *
setfacl -R -m u:www-data:rx *

答案1

尝试将面具改成“---”?

或者用 setfacl 撤销组权限。chmod 和 setfacl 不起作用太好一起。

答案2

嗯,如果没有完全 chroot,您就无法阻止用户查看“主目录之外的内容”,因为他们始终能够查看系统目录/usr/bin(因为程序就是这样运行的)。我不明白setfacl您给出的命令将如何产生所示的结果;您能否在问题中给出用户主目录的getfacl输出?ls -l

答案3

对于 jailing,较新版本的 ssh 支持 ChrootDirectory 选项。对于仅限 scp 的连接,我使用了scponly过去曾成功过。

至于 apache 是否看到这些文件,您没有完全正确地设置 chmod。请尝试以下操作(假设 apache 使用 apache 组):

cd /主页

chmod -750 * # 所有者可以执行所有操作,组成员可以读取,其他人则无权执行任何操作

chgrp -R apache * # 通过将组更改为 apache,apache 现在可以读取文件。

请记住,您不想将普通用户添加到 apache 组。

答案4

hayalci 的评论

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.

相关内容