添加一個用戶到指定用戶組:
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命令。