首先分别阐述两个命令的常用用法

 

     usermod   功能:修改用户信息

              用法:usermod  选项  参数  用户名

              常用选项:  

               -c  (comment)       :修改用户的注释信息

               -d (home directory): 修改用户的家目录

               -l (login name)    :修改用户名(登录名也就是用户名)

               -g (group name)    :修改用户的所属组

             需要说明的是usermod修改用户的信息后,在/etc/passwd中查看,每个用户的信息由冒               号隔开的7个字段组成



     gpasswd   功能:添加或删除组成员

               用法:gpasswd  选项  参数  组名

               常用选项:

                -a(add) :添加组成员

                -d(delete): 删除组成员



两个命令的基本用法有了,下面说明usermod -g 和 gpasswd -a 的区别,为了说明问题,这里创建一个场景

    下面用两种方法创建组成员
    
第一种

                  useradd  user3

                   groupadd student
                   useradd -g student user3

 

[root@localhost ~]# useradd user3

[root@localhost ~]# tail -1 /etc/passwd

user3:x:503:504::/home/user3:/bin/bash

[root@localhost ~]# groupadd student

[root@localhost ~]# tail -1 /etc/group

student:x:505:

 

[root@localhost ~]# usermod -g studentuser3

[root@localhost ~]# tail -3 /etc/passwd

user1:x:501:501:df,fd,df,df:/home/user1:/bin/bash

user2:x:502:502::/home/user2:/bin/bash

user3:x:503:505::/home/user3:/bin/bash

[root@localhost ~]# tail -3 /etc/group

group2:x:502:user1

user3:x:504:

student:x:505:

 




        弟二种

                  groupadd student
                  useradd user3
                  gpasswd -a user3 student

在练习第二种的命令时,可以将第一种方法中建立的用户和组删除,再重新建立,避免出现问题

 

[root@localhost ~]# groupadd student

[root@localhost ~]# useradd user3

Creating mailbox file: File exists

[root@localhost ~]# tail -3 /etc/passwd

user1:x:501:501:df,fd,df,df:/home/user1:/bin/bash

user2:x:502:502::/home/user2:/bin/bash

user3:x:503:504::/home/user3:/bin/bash

[root@localhost ~]# tail -1 /etc/group

user3:x:504:

[root@localhost ~]# gpasswd -a user3student

Adding user user3 to group student

[root@localhost ~]# tail -2 /etc/group

student:x:503:user3

user3:x:504:

[root@localhost ~]# tail -3 /etc/passwd

user1:x:501:501:df,fd,df,df:/home/user1:/bin/bash

user2:x:502:502::/home/user2:/bin/bash

user3:x:503:504::/home/user3:/bin/bash





第一种在/ect/group中student组没有user3用户但是/etc/passwd中显示user3组id是student组的id,在创建user3用户时,默认的用户组是user3组,(在添加新用户时,如果没有指定用户的组,则自动创建一个以用户名命名的组,然后将用户添加该组中),然后使用usermod -g 修改了user3用户的基本组,将user3用户的基本组修改为student,此时student组已经成为user3用户的基本组,所以在student组中没有user3用户(/etc/group中基本组不会显示,附加组会显示),而在user3用户中的基本组id是student的id。


第二种在/etc/group中student组和user3组存在 并且student组中有user3用户,这是把user3用户添加到组student中,对添加到student组中的user3用户而言,student组是user3用户的附加组。但是请注意,user3用户添加到了student组,但是user3组仍然独立存在,这就好比一个人本来是属于开发部的,临时要调到测试部去工作,那么就要把他添加到测试部的组里,使他可以协同测试部得其他成员一起工作。但是开发部是他的基本组,仍然存在。

总结一下:gpasswd -a 是给用户添加附加组或删除附加组,是对一个用户的附加组的操作,即把一个用户添加到附加组或者把一个用户的的附加组删除,用户的基本组保持不变。

         usermod -g 是修改一个用户的基本组,是修改用户的基本组,即修改的是/etc/passwd的第四个字段。