主要组 (gid)、次要组和权限的问题

主要组 (gid)、次要组和权限的问题

我希望我的问题不会重复,因为我已经用不同的关键字在互联网上搜索了几天,但找不到权限问题的解决方案。

我在服务器上设置了一个共享文件夹。该文件夹的选项有:

user2@server:~$ mount
Y.Y.Y.Y:/Data on /media/Data type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=X.X.X.X,local_lock=none,addr=Y.Y.Y.Y)

“user2”是我想要使用组“wholegroup”访问文件夹的用户。在第一部分中,我的许可被拒绝。这是正常的,因为“user2”不是所有者,他不属于该文件夹所属的组,并且该文件夹对于任何用户都没有 r 或 x 权限:

user2@server:~$ id
uid=1001(user2) gid=1001(user2) groups=1001(user2)
user2@server:~$ ls -l /media/Data/
ls: cannot open directory '/media/Data/': Permission denied
user2@server:~$ ls -l /media/
total 5
drwxr-x--- 6 user1  wholegroup      6 Aug 15 22:59 Data
drwxr-xr-x 2 root root           4096 May 15 16:12 OtherData
user2@server:~$

现在,从具有管理员权限的“user1”,我将“user2”添加到“wholegroup”组:

user1@server:~$ sudo usermod -a -G wholegroup user2

我注销并登录以使“user2”更改生效:

user2@server:~$ exit
logout
Connection to X.X.X.X closed.
user1@computer:~$ ssh [email protected]

我检查“user2”的组并尝试访问该文件夹:

user2@server:~$ id
uid=1001(user2) gid=1001(user2) groups=1001(user2),166636(wholegroup)
user2@server:~$ ls -l /media/Data/
ls: cannot open directory '/media/Data/': Permission denied
user2@server:~$ ls -l /media/
total 5
drwxr-x--- 6 user1 wholegroup    6 Aug 15 22:59 Data
drwxr-xr-x 2 root root        4096 May 15 16:12 OtherData
user2@server:~$

它告诉我我没有权限。这就是我不明白的地方,如果“user2”属于“wholegroup”作为辅助组,并且该文件夹具有该组的r和x权限,为什么我无法访问它?是否必须是主要组“整个组”才能访问?

我通过将组更改为主要组来进行测试:

user1@server:~$ sudo usermod -g wholegroup user2



user2@server:~$ exit
logout
Connection to X.X.X.X closed.
user1@computer:~$ ssh [email protected]
user2@server:~$ id
uid=1001(user2) gid=166636(wholegroup) groups=166636(wholegroup)
user2@server:~$ ls -l /media/Data/
total 34
drwxr-x--- 23 user1 wholegroup 25 Sep  7 11:58 Data
drwxr-x---  5 user1 wholegroup  5 Aug 17 13:02 Music
drwxr-x---  6 user1 wholegroup  6 Aug 15 22:59 Video
user2@server:~$ ls -l /media/
total 5
drwxr-x--- 6 user1 wholegroup    6 Aug 15 22:59 Data
drwxr-xr-x 2 root root        4096 May 15 16:12 OtherData
user2@server:~$

你能解释一下为什么它不能作为辅助组工作吗?我做错了什么以及解决方案是什么?我应该使用一些特殊权限,如 SUID 或 GUID 吗?

非常感谢!

答案1

我已经找到了解决方案,感谢超级_ik的多拉佩维奇Reddit 上的评论。

失败是因为我没有在服务器中创建用户。我的具体情况的解决方案是创建并将其添加到先前已在服务器上创建的user2组中。wholegroup

我引用 super_ik 的评论:

如果我没记错的话,访问检查是在服务器端执行的,服务器仅接收访问该文件夹的进程的 uid 和 gid。如果服务器不知道这些 UID,它也无法查找其辅助组。

相关内容