You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:27:39