linux下基本组和附属组有什么区别

linux下基本组和附属组有什么区别,第1张

Linux系统以组Group方式管理用户,用户和组的对应关系为多对多,即某个用户可加入/属于一个或多个组,某个组可以有0个、1个或多个用户。

组的分类

从用户的角度,分为主组和附属组。

主组:也被称为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一个group

passwd里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 -"命令。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/9006205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存