Linux 用户可以属于多个组吗?
如果允许的话,一个用户可以访问两个组的文件,那就太好了!
如果没有的话,还有其他方法可以实现此功能吗?
答案1
是的,用户可以是多个群组的成员:
用户被组织成组,每个用户至少属于一个组,也可能属于其他组。组成员身份赋予您访问该组允许的文件和目录的特殊权限。
例如,您可以将用户添加username
到组group1
并group2
使用以下命令usermod
命令:
usermod -a -G group1,group2 username
答案2
是的,普通的 Unix 用户可以成为多个组的成员。
然而,只有一用户的组初级组。
例如,添加用户时使用adduser
,可以使用选项指定主要组--ingroup
,并在 Debian/Ubuntu 等系统中像这样添加多个次要组:
$ # would create user gert and group gert
$ sudo adduser gert
$ # same, but no group 'gert' will be created, but made member of the existing
$ # group 'adm'
$ sudo adduser gert --ingroup adm
$ # secondary groups
$ sudo adduser gert superusers
Adding user `gert' to group `superusers' ...
Adding user gert to group superusers
Done.
$ sudo adduser gert debianfans
可以使用以下方法检查您是哪个用户的成员id
:
$ id
uid=1000(gert) gid=1000(gert) groups=1000(gert),4(superusers),5(debianfans)
^^^ ^^^^^^
primary secondary
group groups
对于其他用户来说,只需将其用户名作为第一个参数传递给即可id
。
-g
您可以使用( --gid
) 选项更改用户的主要组usermod
$ usermod -g new_primary_group username
答案3
是的,请参阅其他答案。另一种选择是访问控制列表。
setfacl
getfacl
每个文件可以有一个可以访问它的用户和组的列表。
一个人是一个用户和多个组(组只能由管理员/根用户设置)。一个文件通常是一个所有者用户和一个组,使用 ACL 时,它可以是一个所有者用户,加上许多其他用户,加上多个组。
使用哪种方法取决于您的需要。ACL 可以是一个窗格,但不需要管理员(除了安装和启用,它通常不是我的默认安装)。另一种方法更简单,但功能较弱。