在 GCP 启动脚本中查找用户名

finding username during GCP startup script

我正在使用他们的 python API 启动一个 GCP 实例,我正在通过启动脚本安装 docker 和其他软件包。问题是启动脚本 运行s 作为 root,随后我只能 运行 docker 作为 root。理想情况下,我想将用户添加到 docker 组中,这样它就可以 运行 docker 而无需调用 sudo

问题是我不记得在创建实例时指定了任何用户名,这取决于我 ssh 进入实例的方式(无论是让 GCP 管理 ssh 密钥还是使用我上传的密钥),我得到不同的用户名。

所以,我想知道是否有办法找出哪些用户可以连接到此实例并将他们添加到启动脚本中的 docker 用户组?

根据您通过 SSH 连接到 Compute Engine 的方式,系统会为您创建 SSH 密钥。这也创建了一个 Linux 帐户。此帐户的配置(例如,新帐户应属于哪些组)在名为 /etc/default/instance_configs.cfg 的文件中定义。如果您编辑该文件,您会发现一个条目:

[Accounts]
...
groups = adm,dip,docker,lxd,plugdev,video
...

这是创建帐户时添加的用户组列表。您特别询问有关将用户添加到 docker 组的问题,您可能会惊讶地发现 docker 已经作为默认值出现在列表中。你可能会想 "Why is my user not a member of the docker group?".

我猜您已经创建了一个 Compute Engine,然后登录并安装了 docker 包。在这里暂停。您第一次登录时,就是创建帐户的时间,也就是用户被添加到组中的时间。但是,在初始登录时,docker 尚未安装,因此 docker 组尚未创建,因此无法将用户添加到不存在的组中。

作为测试,请尝试以下操作。

来自云 Shell,运行:

gcloud compute ssh bob@[YOUR_INSTANCE] --zone=[ZONE]

这将创建一个新身份 (bob) 并以 bob 身份登录。 运行 id 命令,现在让我们看看您是哪个组的成员。