在 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)
组在哪里
core
定义的?我可以使用什么命令来更改 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.conf
contains usrfiles
,它似乎是 CoreOS 扩展。有用喜欢files
,但看下面/usr/share/baselayout
而不是/etc
。因此files usrfiles
意味着/etc/group
将进行咨询,然后/usr/share/baselayout/group
。
用户和组通常不是在启动时或其他情况下动态创建的;它们是持久的系统配置。您可以从 Systemd 单元调用诸如adduser
、等命令,但这种情况相当罕见。addgroup
我不熟悉 CoreOS,但我非常怀疑创建core
在启动时调用的用户或组是否会实现任何有用的效果。如果您想为组 500 指定名称,请在/etc/group
with中创建一个条目addgroup
。如果您想出于自己的目的创建用户或组,请使用adduser
和addgroup
,并且不要重复使用已使用的名称或号码。
答案2
也许其他人可以发布其具体工作原理的详细信息,但是这至少似乎是一个足够的解释:
在 CoreOS 计算机上,操作系统本身作为只读分区安装在 /usr 处。
我没有更改 uid/gid,而是创建了一个新用户/组。