Linux 用户组:如何在主目录下创建共享目录

Linux 用户组:如何在主目录下创建共享目录

我创建了 3 个用户“u1”、“u2”、“u3”。现在我想为用户 u2、u3 提供对 u1 的 /home/u1/share 目录的访问权限。

我不想创建一个名为“shared”的新公共组并在其中添加 3 个用户。是否可以使用“u1”组本身?

到目前为止我尝试过

#add u2,u3 to group of u1
usermod -a -G u1 u2
usermod -a -G u1 u3

#ensure u1 has group read access
chmod 750 /home/u1

#create new shared dirs
umask 027 && mkdir /home/u1/share

尽管

ls -ld /home/u1/share
drwxr-x---. 2 u1 u1 4096 Apr 23 10:11 /home/u1/share

显示对组的读取访问权限 - 用户 u2 无法访问此目录。

[u2@ ~]$ ls -l /home/u1/share
ls: cannot access /home/u1/share: Permission denied

对此有什么想法吗?我哪里做错了?

答案1

您所做的应该没有问题,但是u2自从运行 usermod 以来,用户是否已经注销并再次登录? 仅在登录时才能获得群组成员资格。

执行id -aforu2还可以帮助确认该特定u2shell 是否在组中u1

不管怎样,虽然我不同意 Hauke 关于 ACL 的观点(在这种情况下它们肯定不是必需的,因为正如您所展示的,它可以用组来完成;我发现 ACL 几乎从来没有真正需要过,而且即使在偶尔需要它们的情况下也非常痛苦,所以我通常建议人们改变他们的要求),但我同意这是一个适合新自定义组的完美情况。

答案2

您需要 ACL 来解决权限问题。您必须授予所有相应目录组写入权限,并为它们设置默认 ACL(以防用户能够创建子目录):

setfacl -d -m g:u1:rwx "$directory"

或者

setfacl -d -m g::rwx "$directory"

如果您通过 SGID 位确保新创建的子目录属于同一组。

我认为你不创建新组的决定不是一个好主意。

相关内容