“www/website1” 的所有者和组是 root:www-data,我可以以 root 或 sudo 用户身份修改其内容或配置。
但是现在,我想创建另一个名为 website2 的网站(位于 'www' 目录下),需要将其访问权限授予我的一个朋友(这样他就可以随心所欲地为我配置该网站)。但是即使使用 sudo,他也不应该能够修改或查看我操作系统中的任何其他目录。
为此,我可以在我的 Ubuntu 操作系统中创建一个新用户,并为他创建一个 ftp 登录 ID/密码。但是我看到/发现,除了拥有对此网站 2 的 777 访问权限外,他还自动获得了对完整根文件夹及其所有子文件夹的读取权限。
有没有一种简单的方法来控制这一点,以便他只能看到所需的 1 个(或 2 个)文件夹,而不会看到指定的文件夹?另外,我不想逐个修改我的完整操作系统的所有其他文件夹的属性。谢谢。
答案1
www-data
这里的关键是:即组。您可以将用户添加到组中,以便他们能够根据组的权限访问文件和目录。
命令如下:
usermod -a -G www-data {user2}
{user2} 将能够更改与该组相关的文件(除了他自己可以更改的文件之外)。
如果需要,您甚至可以创建一个新组,将该组连接到 2 个用户,并将用户 2 限制为仅访问与该组相关的文件。Apache 使用 www-data 作为用户,但该用户也可以拥有多个组 www-data。
我看到/发现,他除了拥有对此网站2 的 777 访问权限外,还自动获得了对完整根文件夹及其所有子文件夹的读取权限。
除非您还包括粘滞位,否则 chmod 777 永远不是答案。
答案2
使用以下命令:
setfacl -R -m user:{user2}:rwX www/website2
这应该授予用户 {user2} 对 www/website2 以及该目录中所有内容的完全访问权限。
编辑:我刚刚注意到您的问题是 {user2} 对 www/website2 以外的其他目录具有读取权限。这些目录通常默认启用“其他”的读取权限,即任何用户 - 这就是 {user2} 可以读取它们的原因。如果不删除此访问权限,您就无法阻止 {user2} 查看它们。唯一的方法是 - 正如我在您的问题下的评论中所述 - 将 {user2} 锁定在 FTP chroot jail 中,这样 www/website2 将成为该用户的根目录。检查您的 FTP 服务器是否支持此功能。