首页 > 解决方案 > 在具有 osAdminLogin 角色的 gcp 上使用 oslogin 用户无法在实例上执行 sudo

问题描述

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

他们将 throw ssh 与计算引擎中的 GCP Web 界面连接起来

当他们做 sudo ls

有些用户需要密码,有些则不需要。

在文件夹 /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/ 文件夹中的空文件之外,它正在工作但可能不稳定)

标签: google-cloud-platformgoogle-compute-engine

解决方案


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

我试过的东西不起作用:

  • 重启实例
  • 向我的 IAM 账户显式添加角色roles/compute.osAdminLogin(我已经是项目所有者)

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


推荐阅读