启用OS Login时如何自定义sudo权限?
启用OS Login时如何自定义sudo权限?
当然可以自定义这些sudo权限,甚至给特定用户或组完全禁用sudo!我结合实际经验给你分享几种靠谱的方法:
1. 用自定义IAM角色精细控制登录权限
Google Cloud默认的「Compute OS Login」和「Compute OS Admin Login」角色是预设的权限集合,如果你想让用户只能登录但没有sudo权限,完全可以创建自定义IAM角色:
- 只保留
compute.osLogin核心权限,去掉所有和sudo相关的权限项(比如compute.osAdminLogin对应的sudo授权),然后把这个自定义角色分配给目标用户。这样用户能正常通过OS Login登录实例,但默认没有sudo权限。 - 要是想让部分用户拥有受限的sudo权限,后续还可以结合本地sudoers配置来补充,不过要注意Google自动生成的sudo规则优先级较高,需要用本地配置覆盖。
2. 本地sudoers配置覆盖Google生成的规则
OS Login会在/var/google-sudoers.d/目录下为每个授权用户生成单独的sudo规则文件(就像你提到的first_last_example_com那个文件),如果你想修改某个用户的sudo权限,可以通过在/etc/sudoers.d/下创建优先级更高的配置文件来覆盖:
- 禁用特定用户的sudo:创建一个命名类似
99-custom-deny的文件(文件名数字越大,加载优先级越高),用visudo -f /etc/sudoers.d/99-custom-deny编辑,加入规则:first_last_example_com ALL=(ALL) DENY - 设置受限的sudo权限:比如只想让用户能运行
apt update和apt upgrade,可以写:
👉 重点提醒:编辑sudoers相关文件必须用first_last_example_com ALL=(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/apt upgradevisudo命令,它会自动检查语法错误,避免因配置失误导致sudo功能失效。
3. 完全禁用Google自动生成的sudo规则
如果你想完全接管实例的sudo权限管理,不想使用OS Login自动生成的规则,可以编辑/etc/sudoers文件,找到包含/var/google-sudoers.d/的那一行,把它注释掉:
# #includedir /var/google-sudoers.d
之后系统就不会加载Google生成的用户sudo规则了,你可以完全在/etc/sudoers或/etc/sudoers.d/目录下配置自己的sudo策略。
备注:内容来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

