假设我有 groups G1
、 、G2
、 和 user U
。
用户U
是这两个组的成员,但是G1
其主要组。
在我的文件系统中有一个F
可以通过G2
.现在,如果U
想要访问,F
唯一的方法就是执行newgrp G2
,然后访问,这不是我希望我的用户一直做的事情。
我应该怎么办?
具体例子:
ajalali@ws47lx:/projects/gchrupala$ stat .
File: `.'
Size: 17 Blocks: 0 IO Block: 1048576 directory
Device: 15h/21d Inode: 150 Links: 3
Access: (0775/drwxrwxr-x) Uid: ( 6052/gchrupala) Gid: ( 6000/nis_users)
Access: 2015-03-05 15:34:46.260662858 +0100
Modify: 2013-03-05 16:35:16.000000000 +0100
Change: 2013-06-10 20:40:25.418034444 +0200
Birth: -
ajalali@ws47lx:/projects/gchrupala$ id
uid=1004(ajalali) gid=1001(ajalali) groups=1001(ajalali),6000(nis_users),6060(admin),6061(sudo),1625200000(admins),1625200001(lsv_local),1625200035(compute_server_users),1625200036(contact_server_users)
ajalali@ws47lx:/projects/gchrupala$ mkdir tmp
mkdir: cannot create directory `tmp': Permission denied
用户 (ajalali) 是拥有当前文件夹 (6000) 的组的成员,但无法在那里进行任何操作,因为它的主要组 (1001) 不是拥有当前文件夹的组。
只有用户newgrp nis_users
先这样做,然后尝试在那里创建一个文件夹,它才会起作用。
答案1
这看起来像是 NFS 问题。是否涉及 NFS?
在基于 Debian 的系统(可能还有其他系统)上运行的 NFS 服务器被配置为忽略补充组,除非另有明确说明。确保--manage-gids
已提供给rpc.mountd
程序。在 Debian 系统上,这是通过编辑/etc/default/nfs-kernel-server
并确保其RPCMOUNTDOPTS=--manage-gids
存在来完成的。