google-cloud-platform - 在具有 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/ 文件夹中的空文件之外,它正在工作但可能不稳定)
解决方案
我在最初使用旧登录系统设置的项目上遇到了类似的问题(基于存储在实例或项目元数据中的 SSH 密钥)。当我将项目转换为使用 OS Login 时,我失去了在一个 VM 实例上没有密码的情况下使用 sudo 的能力。这是一个主要问题,因为我从未为我的用户帐户设置密码,因此无法使用 sudo 来解决问题。
我试过的东西不起作用:
- 重启实例
- 向我的 IAM 账户显式添加角色
roles/compute.osAdminLogin
(我已经是项目所有者)
我通过编辑项目计算引擎元数据以禁用操作系统登录解决了这个问题。禁用后,我确认我能够在没有密码的情况下登录有问题的实例和 sudo。然后我再次编辑项目元数据以重新启用操作系统登录。这一次,无密码 sudo 处理了有问题的实例。我第一次从旧登录切换到操作系统登录时,该实例似乎没有完全重新配置。
推荐阅读
- python - 如何从其 16 位十六进制码输出 unicode?
- momentjs - 即时操作日期不起作用
- python - 找不到满足 menuinst 要求的版本(来自 conda)
- javascript - 有没有办法使用 http-vue-loader 在组件中加载组件
- php - 如何制作动态的月、日、年错误信息
- node.js - 查找刚刚在路由中创建的用户的_id
- android - Webview shouldOverrideUrlLoading 不捕获 URL 请求
- php - 是否有 readfile() 选项,但只有二进制文件的字节范围?
- web-component - shadowRoot.activeElement 在 Safari 中不起作用
- haskell - 什么数据 {-# UNPACK #-} !Size !a !(Set a) !(Set a) 在 Haskell 中是什么意思