linux命令gpasswd -a和usermod -g的区别
首先分别阐述两个命令的常用用法
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的第四个字段。
本文出自 “linux学习” 博客,请务必保留此出处http://yongtao.blog.51cto.com/10183629/1687595