首页 > linux日常,服务器相关 > gpasswd -a user1 group1和usermod -g group1 user1 的区别

gpasswd -a user1 group1和usermod -g group1 user1 的区别

用gpasswd -a user1 group1 后,查看/etc/passwd看到user1的组ID还是user1组

用usermod -g group1
user1后,user1的组ID才是group1的ID。

那么,gpasswd -a 和命令 usermod -g 有什么区别,两个在底层下分别做了什么?

usermod基于uid和gid操作
usermod -g group1 user1 ## 修改用户user1信息,user1默认组为group1
gpasswd基于用户名和组名操作
gpasswd -a user1 group1 ## 添加用户user1到组group1

我用gpasswd -a 添加一用户到group1 之后删除group1 事实上是可以顺利删除的(原因是没有真正的加入到group1中),用usermod -g 添加, 真正可以加入,不能删除group1.他们两个命令在底层下做了什么,导致这一结果呢。

做个测试:

gentoo ~ # useradd aa
gentoo ~ # egrep "aa" /etc/passwd
aa:x:1004:1006::/home/aa:/bin/bash
gentoo ~ # egrep "aa[12]" /etc/group
aa1:x:1004:
aa2:x:1005:
gentoo ~ # egrep "aa" /etc/group
aa1:x:1004:
aa2:x:1005:
aa:x:1006:
gentoo ~ # egrep "aa" /etc/passwd
aa:x:1004:1006::/home/aa:/bin/bash
gentoo ~ # usermod -g aa1 aa
gentoo ~ # egrep "aa" /etc/passwd
aa:x:1004:1004::/home/aa:/bin/bash
gentoo ~ # egrep "aa" /etc/group
aa1:x:1004:
aa2:x:1005:
aa:x:1006:
gentoo ~ # gpasswd -a aa aa2
Adding user aa to group aa2
gentoo ~ # egrep "aa" /etc/group
aa1:x:1004:
aa2:x:1005:aa
aa:x:1006:
gentoo ~ # egrep "aa" /etc/passwd
aa:x:1004:1004::/home/aa:/bin/bash

usermod只是改变了组识别号/etc/passwd,第四列,这时候该组为用户主组
gentoo ~ # groupdel aa1
groupdel: cannot remove the primary group of user 'aa'

gpasswd,将用户添加到一个组,用户拥有多个组,没有改变用户主组,所以可以删除

就是说usermod -g是设置主用户组的,而gpasswd是加入组而不是主用户组

上一篇: linux下gpasswd命令

下一篇: redhat解释gpasswd与usermod区别