添加一个用户到指定用户组:

gpasswd –a 用户名 组名
usermod –G 组名 用户名

//第一种:gpasswd –a 用户名 组名

[root@localhost ~]# id user1

uid=501(user1) gid=501(user1) groups=501(user1)

[root@localhost ~]# gpasswd -a user1 user_group

Adding user user1 to group user_group

[root@localhost ~]# id user1

uid=501(user1) gid=501(user1) groups=501(user1),500(user_group)

//第二种:usermod –G 组名 用户名

[root@localhost ~]# id user1

uid=501(user1) gid=501(user1) groups=501(user1)

[root@localhost ~]# usermod -G user_group user1

[root@localhost ~]# id user1

uid=501(user1) gid=501(user1) groups=501(user1),500(user_group)

很显然,这两种方式得到的结果是一样的。其实对于上面两种方式正确来说是将用户组添加到指定用户的用户附加组中。

但是这个使用时候我们创建文件得到所属的组还是原来的user1组。可以使用newgrp来切换用户组,但是这个newgrp切换用户组只是临时切换的,当账号重新登录后就会变回去的。这个情况我们可以使用id和id 用户名 命令看出来。

[user1@localhost ~]$ touch file1

[user1@localhost ~]$ ls -l

total 0

-rw-rw-r--. 1 user1 user1 0 Jul  1 11:19 file1

[user1@localhost ~]$ id

uid=501(user1) gid=501(user1) groups=501(user1),500(user_group) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[user1@localhost ~]$ id user1

uid=501(user1) gid=501(user1) groups=501(user1),500(user_group)

[user1@localhost ~]$ newgrp user_group

[user1@localhost ~]$ touch file2

[user1@localhost ~]$ ls -l

total 0

-rw-rw-r--. 1 user1 user1      0 Jul  1 11:19 file1

-rw-r--r--. 1 user1 user_group 0 Jul  1 11:20 file2

[user1@localhost ~]$ id

uid=501(user1) gid=500(user_group) groups=501(user1),500(user_group) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[user1@localhost ~]$ id user1

uid=501(user1) gid=501(user1) groups=501(user1),500(user_group)

修改一个用户到指定用户组

[root@localhost ~]# id user1

uid=501(user1) gid=501(user1) groups=501(user1)

[root@localhost ~]# usermod -g user_group user1

[root@localhost ~]# id user1

uid=501(user1) gid=500(user_group) groups=500(user_group)

对于gpasswd -a命令和usermod -G添加用户到用户组同时会保留这个用户之前所在组信息因为是将用户添加到用户群组中修改的是groups,而usermod会将这个用户之前添加的组信息删除直接修改的是gid,所以如果想让指定用户临时加入指定组,可以使用gpasswd –a或者usermod -G命令。

04-26 19:18