Google cloud platform 在gcp上使用oslogin和osAdminLogin角色,用户可以';t sudo在实例上

Google cloud platform 在gcp上使用oslogin和osAdminLogin角色,用户可以';t sudo在实例上,google-cloud-platform,google-compute-engine,Google Cloud Platform,Google Compute Engine,我有一些具有以下角色的GCP用户: *compute.instances.osAdminLogin *iam.serviceAccountUser 它们将ssh连接到计算引擎中的GCPWeb接口 当他们做sudo的时候 对于某些用户,密码是请求的,而有些用户则不是 在/var/google sudoers.d文件夹中/ 对于不需要提示就可以执行sudo的用户,我们可以从他们的文件中读取: user_name ALL=(ALL) NOPASSWD: ALL 对于其他人,文件是空的 操作系统信息:

我有一些具有以下角色的GCP用户: *compute.instances.osAdminLogin *iam.serviceAccountUser

它们将ssh连接到计算引擎中的GCPWeb接口

当他们做sudo的时候

对于某些用户,密码是请求的,而有些用户则不是

在/var/google sudoers.d文件夹中/ 对于不需要提示就可以执行sudo的用户,我们可以从他们的文件中读取:

user_name ALL=(ALL) NOPASSWD: ALL
对于其他人,文件是空的

操作系统信息:

uname -a
Linux xxx 4.15.0-1027-gcp #28~16.04.1-Ubuntu SMP Fri Jan 18 10:10:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
对于相同的用户,在另一个vm上,在同一个gcp项目中,他们都可以进行sudo

我希望所有具有相同角色的用户在实例上具有相同的sudo行为


我应该为我的用户做些什么才能使用sudo?(除了覆盖/var/google-sudoers.d/>文件夹中正在工作但可能不稳定的空文件之外)

我在一个最初使用旧登录系统设置的项目上遇到了类似的问题(基于实例或项目元数据中存储的SSH密钥)。当我将项目转换为使用OS登录时,我失去了在一个VM实例上使用无密码sudo的能力。这是一个主要问题,因为我从未为我的用户帐户设置密码,因此无法使用sudo解决问题

我尝试过但不起作用的事情:

  • 重新启动实例
  • 明确地将role
    roles/compute.osadmin
    添加到我的IAM帐户(我已经是项目所有者)

我通过禁用操作系统登录解决了这个问题。禁用后,我确认我可以在没有密码的情况下登录到有问题的实例和sudo。然后我再次编辑项目元数据以重新启用OS登录。这一次,无密码sudo处理有问题的实例。在我第一次从传统登录切换到操作系统登录时,该实例似乎没有完全重新配置。

这可能是由于多种原因造成的。我建议创建一个公共问题跟踪器[并提供复制步骤,以便我们可以复制和详细调查。如果重新启动问题实例,问题是否仍然存在?您是否使用组织化?您授予osAdminLogin(实例、项目、组织)的级别是什么?如果您从实例中删除
角色/compute.osadmin
,然后重新添加角色,这是否解决了问题?我想这是在您描述的用例中。正如您所说,我的vm实例最初设置为旧版登录。感谢您的帮助feedback@GaëlStéphant不客气。如果我的回答有帮助,请投赞成票和/或打A认可的。