目录
组管理命令
添加用户组:groupadd
- 添加用户组的命令是 groupadd,命令格式如下:
[root@localhost ~]# groupadd [选项] 组名
- 选项:
- -g GID: 指定组 ID
- 添加用户组的命令比较简单,举个例子:
[root@localhost ~]# groupadd group1
- 添加 group1 组
[root@localhost ~]# grep "group1" /etc/group
- group1:x:502:
删除用户组:groupdel
- groupdel 命令用于删除用户组,命令格式如下:
[root@localhost ~]#groupdel 组名
- 例子:
[root@localhost ~]#groupdel testgrp
#删除 testgrp 组
- 不过大家要注意,要删除的组不能是其他用户的初始组,也就是说这个组中没有初始用户才可以删除。如果组中有附加用户,则删除组时不受影响
把用户添加进组或从组中删除:gpasswd
- 其实 gpasswd 命令是用来设定组密码并指定组管理员的,不过我们在前面已经说了,组密码和组管理员功能很少使用,而且完全可以被 sudo 命令取代,所以 gpasswd 命令现在主要用于把用户添加进组或从组中删除。
- 命令格式如下:
[root@localhost ~]# gpasswd [选项] 组名
- 选项:
- -a 用户名: 把用户加入组
- -d 用户名: 把用户从组中删除
- 举个例子:
[root@localhost ~]# groupadd grouptest
#添加组 grouptest
[root@localhost ~]# gpasswd -a user1 grouptest
Adding user user1 to group grouptest
#把用户 user1 加入 grouptest 组
[root@localhost ~]# grep "user1" /etc/group
user1:x:501:
grouptest:x:505:user1
#查看一下,user1 用户已经作为附加用户加入 grouptest 组
[root@localhost ~]# gpasswd -d user1 grouptest
Removing user user1 from group grouptest
#把用户 user1 从组中删除
[root@localhost ~]# grep "grouptest" /etc/group
grouptest:x:505:
#组中没有 user1 用户了
- 注意,也可以使用 usermod 命令把用户加入某个组
- 不过 usermod 命令的操作对象是用户,命令是“usermod -G grouptest user1”,把用户名作为参数放在最后;
- gpasswd 命令的操作对象是组,命令是“gpasswd -a user1 grouptest”,把组名作为参数放在最后。
改变有效组:newgrp
- 每个用户可以属于一个初始组(用户是这个组的初始用户),也可以属于多个附加组(用户是这个组的附加用户)。既然用户可以属于这么多用户组,那么用户在创建文件后,默认生效的组身份是哪个呢?
- 当然是初始用户组的组身份生效了,因为初始组是用户一旦登录就直接获得的组身份。
- 也就是说,用户在创建文件后,文件的属组是用户的初始组,因为用户的有效组默认是初始组。既然用户属于多个用户组,那么能不能改变用户的有效组呢?使用命令 newgrp 就可以切换用户的有效组。命令格式如下:
[root@localhost ~]# newgrp 组名
- 举个例子,我们已经有了普通用户 user1,默认会建立 user1 用户组,user1 组是 user1 用户的初始组。我们再把 user1 用户加入 group1 组,那么 group1 组就是 user1 用户的附加组。当 user1 用户创建文件 test1 时,test1 文件的属组是 user1 组,因为 user1 组是 user1 用户的有效组。通过 newgrp命令就可以把 user1 用户的有效组变成 group1 组,当 user1 用户创建文件 test2 时,就会发现 test2文件的属组就是 group1 组。命令如下:
[root@localhost ~]# groupadd group1
#添加组 group1
[root@localhost ~]# gpasswd -a user1 group1
Adding user user1 to group group1
#把 user1 用户加入 group1 组
[root@localhost ~]# grep "user1" /etc/group
user1:x:501:
group1:x:503:user1
#user1 用户既属于 user1 组,也属于 group1 组
[root@localhost ~]# su – user1
#切换成 user1 身份,超级用户切换成普通用户不用密码
[user1@localhost ~]$ touch test1
#创建文件 test1
[user1@localhost ~]$ ll test1
-rw-rw-r-- 1 user1 user1 0 1 月 14 05:43 test1
#test1 文件的默认属组是 user1 组
[user1@localhost ~]$ newgrp group1
#切换 user1 用户的有效组为 group1 组
[user1@localhost ~]$ touch test2
#创建文件 test2
[user1@localhost ~]$ ll test2
-rw-r--r-- 1 user1 group1 0 1 月 14 05:44 test2
#test2 文件的默认属组是 group1 组
- 其实就是当用户属于多个组时,在创建文件时哪个组身份生效。使用 newgrp 命令可以在多个组身份之间切换。
- 创建文件,改变权限案例
【注】:参考尚硅谷沈超老师教程