组的分类
从用户的角度,分为主组和附属组。
主组:也被称为primary group、first group或initial login group,用户的默认组,用户的gid所标识的组。
附属组:也被称为Secondary group或supplementary group,用户的附加组。
通过id命令可查看当前用户的主组和附属组
[root@localhost ~]# id root
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)
[root@localhost ~]# id gg
uid=503(gg) gid=503(gg) groups=503(gg)
[root@localhost ~]# id mm
uid=502(mm) gid=500(jww) groups=500(jww)
gid标识主组,groups表示用户所属的全部组(主组和附属组)
1. 用户必须有且只能有一个主组,可以有0个、1个或多个附属组,就如我们一定会有一个用来安家的房子(类同主组),还可以有n个用于投资或其他打算的房子(附属组)。
2. 主组也为默认组,当用户own某个文件或目录时,默认该文件或目录的group owner为该用户的主组(当然,可以通过chgrp修改group owner)。
3. 在/etc/passwd文件中,记录行第四个字段为gid,即用户的主组id。
4. 在/etc/group文件中,记录行第四个字段为组的成员,不显示将该组作为主组的组成员,只显示将该组作为附属组的组成员,因此,/etc/group的记录行的第四个字段没有完整地列出该组的全部成员。
5. 当通过useradd命令创建新用户时,可以通过-g参数指定已存在的某个组为其主组,若没有使用-g参数,
则系统自动创建名称和用户名相同的组作为该用户的主组(前提是variable in /etc/login.defs的USERGROUPS_ENAB属性值为yes),如命令手册的useradd关于-g参数的描述所示:
-g, --gid GROUP
The group name or number of the user′s initial login group. The
group name must exist. A group number must refer to an already
existing group.
If not specified, the bahavior of useradd will depend on the
USERGROUPS_ENAB variable in /etc/login.defs. If this variable is
set to yes (or -U/--user-group is specified on the command line), a
group will be created for the user, with the same name as her
loginname. If the variable is set to no (or -N/--no-user-group is
specified on the command line), useradd will set the primary group
of the new user to the value specified by the GROUP variable in
/etc/default/useradd, or 100 by default.
另外,可通过usermod -g 将普通用户的主组/gid设置为系统中存在的任意某个组(永久性);
也可以通过newgrp暂时性变更当前用户的主组/gid(只对于当前login session有效,非永久性)。
通过usermod -G 设置普通用户的附属组。
etc目录下面有两个文件一个passwd一个grouppasswd里gid是主组,其他组是扩展组,扩展组在/etc/group里描述。
useradd username如果不指定,默认创建一个与uid相同的gid。
其他组可以在创建用户的时候通过-G添加到其他组,也可以用usermod -G groupname username对已存在用户修改。
例如user1的主组是500,扩展组是501和502
user2的主组是501,扩展组是502
user3的主组是502
在passwd格式如下:
user1:x:500:500::/home/user1:/bin/bash
user2:x:501:501::/home/user2:/bin/bash
user3:x:502:502::/home/user3:/bin/bash
group格式如下:
user1:x:500:
user2:x:501:user1
user3:x:502:user1,user2
1,在linux中主组就是root用户组,附加组就是普通用户组。两组用户之间切换可以使用命令"su",不论是root账户切换成普通用户,还是反之2,用法:使用root用户切换普通用户时直接 "su - 普通用户名" 就可以了;使用普通用户切换至root用户时 "su -"或者 "su - root" 然后输入root密码就可以了;3,在大都的linux的版本中,都可以使用"su"或者"su -",但是"su"和"su -"还是有一定的差别的:"su"只是切换了root身份,但Shell环境仍然是普通用户的Shell;而"su -"连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。"su"切换成root用户以后,"pwd"一下,发现工作目录仍然是普通用户的工作目录;而用"su -"命令切换以后,工作目录变成root的工作目录了。用"echo $PATH"命令看一下"su"和"su -"以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用"su -"命令。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)