Linux-让用户隶属于多个组/把用户添加到其它组
注意: 目前发现Ubuntu20.04中修改组信息后需要退出重新登录才能生效,否则相当于没有设置!
使用usermod
#以下语句都是相同作用:给用户「laowang」设置一个附加组「www」,反向理解,就是把用户laowang加入到www组中
usermod -G www laowang
usermod -a -G www laowang
usermod -aG www laowang
#注意如果你当前不是root用户,则要在命令前添加sudo,如:
sudo usermod -G www laowang
如图,-g/-G/-a都写清楚了,这里翻译一下
- -g 强制使用给定的「GROUP」作为新的「主要组」
- -G「附加组」的新名单
- -a 添加用户到附加组
下图为使用实例,用户「langwang」最初只有一个组,叫「laowang」,组id为 1005:
- 第3行「usermod -G www laowang」,其中www是用户组,laowang是用户名,意思是把www组加入到laowang的所属组列表中,而且是作为「附加组」(英文supplementary group),与「附加组」对应的是「主要组」(英文primary group),注意「附加组」和「主要组」是有前后关系的,「主要组」在第一位,「附加组」在组要组的后面,所以这里「www」组排在「laowang」组的后面。
- 第6行,「usermod -g laowang laowang」,第一个laowang是组名,第二个laowang是用户名,前面说了-g的意思是强制使用给定的「GROUP」作为新的「主要组」,而不是网上很多人所说的「覆盖」,所以这个命令执行后,并没有「覆盖」原来的组,而是提示no changes,没有变化,为什么呢?因为「laowang」组已经是用户「laowang」的「主要组」了,所以就没有变化。
- 第7行,「usermod -g www laowang」根据上面所说,这句的意思是:强制把组www作为用户laowang的主要组,根据第9行显示,执行这句以后,www确实已经成为用户「laowang」的主要组,并且,原来的「laowang」这个组已经没有了,这里就体现出了网上很多人所说的-g是「覆盖」的意思(但其实这个覆盖在有些时候不管用,要把用户从某个组中删除,最好还是用下边说的
gpasswd
命令通过-d
(delete)选项来删除)。 - 另外说说「-a」,我单独执行了「usermod -a laowang laowang」,报错,说明-a不能单独用,另外我又试了「usermod -aG laowang laowang」或者「usermod -a -G laowang laowang」,「laowang」这个组又重新被添加为用户「laowang」的「附加组」了,所以其实-a是跟-G一起用的,-a表示添加(a:append),那为什么单独使用-G也可以添加呢?应该是默认就是添加。
使用gpasswd
把laowang加入到www组中(-a:append),反过来说,就是给用户laowang添加一个附加组www
sudo gpasswd -a laowang www
查询用户属于哪些组(在哪些组中)
id laowang
把laowang从www组中移除(-d:delete)
sudo gpasswd -d laowang www
比如现在用户xiebruce
有一个附加组www
,现在我要用gpasswd -d
把www删除,命令怎么写?
id xiebruce
uid=1000(xiebruce) gid=1000(xiebruce) groups=1000(xiebruce),1001(www)
注意,gpasswd
的操作对象是组,所以“用户xiebruce
有一个附加组www
”,要反过来理解成“用户xiebruce
在www
组中”,所以我们要写的删除命令是“把xiebruce
从www
组中删除”
sudo gpasswd -d xiebruce www
如果你直接看这个命令,无法一下子理解xiebruce和www到底哪个是用户哪个是组,可以这么理解gpasswd (-d xiebruce) www
,即“选项后面的参数,是选项作用的对象”,因为-d
的作用是从指定组中删除指定用户(即让用户不再属于某个组),所以这样一看就知道xiebruce
是“要被删除的用户”,从哪里删除呢?从最后一个参数www
组里面删除。
觉得文章对你有用的话鼓励一下我吧