Linux用户组之主组和附加组

概念介绍

主组:

也叫初始组,是用户登录系统时的组,规则如下:

  • 创建新用户时,若未明确指定该用户所属的主组,会默认创建一个与用户名相同的组,作为该用户的主组

  • 用户创建文件时,文件的所属权限组就是当前用户的主组

  • 使用useradd命令时用-g参数可以指定主组,则不会默认创建同名的主组

  • 用户有且只能所属一个主组

  • 用户的主组不能被删除

  • 用户不能直接被移出主组,但可以更换主组

  • 用户被删除时它的主组若没有其他所属用户,则会自动删除该主组

附加组

登录后可切换的其他组,规则如下:

  • 使用useradd命令时用-G参数可以指定附加组

  • 用户可以所属零个或多个附加组

  • 用户的附加组和主组可相同

  • 附加组可以直接被删除而无需关心是否所属于用户

  • 附加组可以新增和移除任意个所属用户

  • 用户被删除时所属附属组不会受影响

命令演示

  • /etc/passwd文件

每一个用户一条记录,7个字段分别为:用户名,密码(隐藏显示x),用户ID,用户主组ID,用户描述,用户主目录,用户默认shell

cat /etc/passwd
  user1:x:1002:1002::/home/user1:/bin/bash
  • /etc/group文件

每一个组一条记录,四个字段分别为:名,密码,组ID,组内用户列表(仅显示将该组作为附加组的用户)

cat /etc/group
  user1:x:1002:
  • 修改用户的主组
usermod -g group1 user1
cat /etc/passwd
  user1:x:1002:1003::/home/user1:/bin/bash
  • 将用户加入附属组

建议使用gpasswd命令而不是usermod,因为usermod -G命令如果不写全用户的附属组,会清空之前的所有附属组

groupadd group2
gpasswd -a user1 group2
  Adding user user1 to group group2
cat /etc/group
  group2:x:1004:user1
  • 用户的主组不能被删除
groupdel user1
  groupdel: cannot remove the primary group of user 'user1'
  • 直接删除附属组
cat /etc/group
  group2:x:1004:user1
groupdel group2
cat /etc/group
  /etc/group中已无记录
  • 创建用户时指定用户所属主组和附加组
    -g:用户所属主组
    -G:用户所属附加组
    -M : 不创建用户主目录
useradd -g group1 -G group2 -M user3
cat /etc/passwd
  user3:x:1003:1003::/home/user3:/bin/bash
cat /etc/group
  group2:x:1004:user3

你可能感兴趣的:(Linux用户组之主组和附加组)