因此,对于在我的服务器上托管网站的客户,我创建用户帐户,并在 /home 中使用标准主文件夹。
我为所有用户设置了一个 SSH 监狱collective
,因为我真的反对使用单独的 FTP 服务器。然后,我安装了 ACL 并将 acl 添加到我的/etc/fstab
- 一切都很好。
- 我 cd 进入
/home
和chmod 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 和集体可以访问——为什么还要集体?)
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 *
尝试将掩码更改为“---”?
或者使用 setfacl 撤销组权限。chmod 和 setfacl 不能很好地协同工作。
好吧,你不能阻止用户在没有完整 chroot 的情况下看到“在他们的主目录之外”,因为他们总是能够看到系统目录
/usr/bin
(因为这是程序运行的方式)。我看不出setfacl
您给出的命令将如何产生显示的结果;getfacl
你能在你的问题中给出ls -l
用户主目录的输出吗?对于监禁,较新版本的 ssh 支持 ChrootDirectory 选项。对于仅 scp 的连接,我过去曾成功使用过scponly。
至于 apache 查看文件,您并没有完全正确地使用 chmod。尝试这样的事情(假设 apache 使用 apache 组):
光盘 /home
chmod -750 * # 所有者可以做任何事情,群组成员可以阅读,其他人可以什么都不做
chgrp -R apache * # 通过将组更改为 apache,apache 现在可以读取文件。
请记住,您不想将普通用户添加到 apache 组。
hayalci 的评论说
帮了大忙。我没有使用 CHMOD 来阻止其他组访问数据,而是使用: