【问题标题】:finding username during GCP startup script在 GCP 启动脚本期间查找用户名
【发布时间】:2020-03-06 11:12:07
【问题描述】:

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

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

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

【问题讨论】:

  • 您使用的是计算引擎的os-login功能还是ssh密钥?
  • @kolban 目前是 ssh-keys。
  • 默认用户名是您向 Google Cloud 进行身份验证时使用的电子邮件地址的第一部分。 SSH 密钥存储在~/.ssh 中。如果您使用了多个凭据,那么您将拥有多个登录 ID。 Google 未启用用户 root 进行登录,因此请仔细检查您的配置。

标签: docker google-cloud-platform google-compute-engine


【解决方案1】:

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

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

这是用户在创建帐户时添加的组列表。您专门询问将用户添加到docker 组,您可能会惊讶地看到docker 已经在列表中作为默认值。然后您可能想知道“为什么我的用户不是 docker 组的成员?”。

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

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

从 Cloud Shell 运行:

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

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

【讨论】:

  • 啊哇...这真的很有趣。是的,你是对的!
猜你喜欢
  • 1970-01-01
  • 2013-02-04
  • 2017-10-12
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 2020-03-03
相关资源
最近更新 更多