coreos上的核心组在哪里定义?

coreos上的核心组在哪里定义?

在 CoreOS EC2 实例上,我发现以下内容:

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
core:x:500:500:CoreOS Admin:/home/core:/bin/bash
$ cat /etc/group    
wheel:x:10:root,core
sudo:x:150:
docker:x:233:core
$ id
uid=500(core) gid=500(core) groups=500(core),10(wheel),233(docker),248(systemd-journal),250(portage)
  1. 组在哪里core定义的?

  2. 我可以使用什么命令来更改 uid用户/组的 gid core,比如在启动时执行的 systemd 单元中?

更新:这似乎与 的内容有关/usr/share/baselayout/group,它确实包含该core组,但我在任何地方都找不到该文件的任何链接。

答案1

根据您发布的passwd和文件,您的系统上group没有调用任何组。core有一个名为 的用户core,用户 ID 为 500,其主要组的组 ID 为 500。组 500 在这些文件中没有给出名称。

组 500 的名称可能是在另一个数据库中给出的。用户和组的数据库配置在/etc/nsswitch.conf。您可以使用以下命令查询它们getent命令:

getent group 500

在 CoreOS 上,/etc/nsswitch.confcontains usrfiles,它似乎是 CoreOS 扩展。有用喜欢files,但看下面/usr/share/baselayout而不是/etc。因此files usrfiles意味着/etc/group将进行咨询,然后/usr/share/baselayout/group

用户和组通常不是在启动时或其他情况下动态创建的;它们是持久的系统配置。您可以从 Systemd 单元调用诸如adduser、等命令,但这种情况相当罕见。addgroup我不熟悉 CoreOS,但我非常怀疑创建core在启动时调用的用户或组是否会实现任何有用的效果。如果您想为组 500 指定名称,请在/etc/groupwith中创建一个条目addgroup。如果您想出于自己的目的创建用户或组,请使用adduseraddgroup,并且不要重复使用已使用的名称或号码。

答案2

也许其他人可以发布其具体工作原理的详细信息,但是至少似乎是一个足够的解释:

在 CoreOS 计算机上,操作系统本身作为只读分区安装在 /usr 处。

我没有更改 uid/gid,而是创建了一个新用户/组。

相关内容