如何阻止GCP Ubuntu虚拟机中的普通用户获取root权限?
问题:阻止Ubuntu普通用户获取root权限(GCP Compute Engine环境)
我在GCP Compute Engine上创建了一台Ubuntu虚拟机,具体信息如下:
-> (ubuntu-minimal-2204-jammy-v20220810) Machine type e2-micro CPU platform Intel Broadwell Architecture x86/64
我通过SSH密钥添加了用户user_test,该用户可正常访问虚拟机,但能通过以下操作获取root权限:
# 重置root密码 sudo passwd # 使用新密码切换为root用户 su
我尝试将该用户从sudo组移除,但未成功:
root@vm_test:/home/user# sudo deluser user_test sudo /usr/sbin/deluser: The user `user_test' is not a member of group `sudo'.
编辑补充:我的sudoers配置文件内容如下,我知道可能需要修改它来限制权限,但不清楚具体操作方法。
# User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
解决方法
1. 定位权限来源
从你的sudoers配置可以看出,%admin组的用户拥有完全sudo权限,你删除sudo组没用,说明user_test实际属于admin组。先执行命令确认:
groups user_test
如果输出包含admin,就验证了这一点。
2. 移除用户的admin组权限
执行命令将user_test从admin组移除:
deluser user_test admin
再次执行groups user_test确认,admin组已不在用户的组列表中。
3. 验证权限限制
切换到user_test用户,尝试执行sudo passwd,此时应该会收到权限不足的提示,无法重置root密码。
(可选)精细化权限控制
如果需要让用户拥有部分sudo权限而非完全禁止,用visudo编辑sudoers文件(必须用这个命令,它会自动检查语法错误,避免配置失误导致sudo失效):
visudo
添加类似规则(示例允许用户执行ls和cat命令):
user_test ALL=(ALL) /usr/bin/ls, /usr/bin/cat
保存后,user_test只能用sudo执行指定的命令,其他高权限操作(如passwd)会被阻止。
内容的提问来源于stack exchange,提问作者cuzureau
相关产品推荐
相关产品推荐

