Linux newgrp命令用法详解:切换用户的有效组

我们说过,每个用户可以属于一个初始组(用户是这个组的初始用户),也可以属于多个附加组(用户是这个组的附加用户)。既然用户可以属于这么多用户组,那么用户在创建文件后,默认生效的组身份是哪个呢?

当然是初始用户组的组身份生效了,因为初始组是用户一旦登陆就获得的组身份。也就是说,用户在创建文件后,文件的属组是用户的初始组,因为用户的有效组默认是初始组。既然用户属于多个用户组,那么能不能改变用户的有效组呢?使用命令 newgrp 就可以切换用户的有效组。命令格式如下:
[root@localhost ~]# newgrp 组名

举个例子,我们已经有了普通用户 lamp,默认会建立 lamp 用户组,lamp 组是 lamp 用户的初始组。我们再把 lamp 用户加入 group1 组,那么 group1 组就是 lamp 用户的附加组。当 lamp 用户创建文件 test1 时,test1 文件的属组是 lamp 组,因为 lamp 组是 lamp 用户的有效组。通过 newgrp 命令就可以把 lamp 用户的有效组变成 group1 组,当 lamp 用户创建文件 test2 时,就会发现 test2 文件的属组就是 group1 组。命令如下:
[root@localhost ~]# groupadd group1
#添加组group1
[root@localhost ~]# gpasswd -a lamp group1
Adding user lamp to group group1 #把lamp用户加入group1组
[root@localhost ~]# grep “lamp” /etc/group
lamp❌501:
group1❌503:lamp
#lamp用户既属于lamp组,也属于group1组
[root@localhost ~]# su - lamp
#切换成lamp身份,超级用户切换成普通用户不用密码
[lamp@localhost ~]$ touch test1
#创建文件test1
[lamp@localhost ~]KaTeX parse error: Expected 'EOF', got '#' at position 51: …14 05:43 test1 #̲test1文件的默认属组是la… newgrp group1
#切换lamp用户的有效组为group1组
[lamp@localhost ~]$ touch test2
#创建文件test2
[lamp@localhost ~]$ ll test2
-rw-r–r-- 1 lamp group1 01月 14 05:44 test2
#test文件的默认属组是group1组

通过这个例子明白有效组的作用了吗?其实就是当用户属于多个组时,在创建文件时哪个组身份生效。使用 newgrp 命令可以在多个组身份之间切换。

猜你喜欢

转载自blog.csdn.net/zyy1659949090/article/details/88176419