sudo无法执行原因及解决办法

1 问题描述

当我们新建一个用户的时候,无法进行 sudo 提权,因为当前新增的用户并没有在系统的信任列表中。当执行 sudo ls 命令的时候,输入当前用户的密码,短暂变成 root 提权而执行命令的前提是当前用户在 root 的信任列表中。而信任名单对应的配置文件就叫做 sudoers ,图示如下:

在这里插入图片描述
输入 ls /etc/sudoers -la 查看 sudoers 文件,可以观察到该文件的拥有者和所属组都是 root,所以任何一个普通用户都无法自行添加。需要切换成管理员再进行添加,图示如下:

在这里插入图片描述

2 解决办法

1、输入 su 变成超级用户,查看 sudoers 文件,图示如下:

在这里插入图片描述
2、由于 root 不受权限约束,所以直接打开 sudoers 文件,图示如下:

在这里插入图片描述
3、添加新建用户到信任列表,强制保存并退出,图示如下:

在这里插入图片描述
4、此时切换到新建用户,再次执行 sudo ls,发现可以进行提权并执行命令,图示如下:

在这里插入图片描述

### 用户无法执行 `sudo` 命令原因 用户无法执行 `sudo` 命令通常有以下几个原因: 1. 当前用户未被添加到具有管理员权限的组中,例如 `sudoers` 文件中没有该用户的记录[^2]。 2. 系统文件 `/etc/sudoers` 或其加载模块(如 `/usr/lib/sudo/sudoers.so`)的所有者不是根用户(uid 0),这可能导致权限验证失败[^3]。 3. 如果目标用户是通过某些特殊方式创建的(比如宝塔面板中的默认用户 `www`),可能缺少必要的 shell 权限或未正确配置所属组[^5]。 --- ### 解决方案 #### 方法一:将当前用户添加至 `sudo` 组 对于大多数基于 Debian 的发行版(如 Ubuntu),可以通过以下命令将用户添加到 `sudo` 组: ```bash usermod -aG sudo username ``` 此操作会赋予指定用户执行 `sudo` 命令的能力。完成后需重启终端或重新登录使更改生效[^4]。 #### 方法二:修复损坏的 Sudo 配置文件所有权 如果提示错误信息类似于 “`/usr/lib/sudo/sudoers.so must be owned by uid 0`”,则表明相关文件的所有权设置不正确。可通过如下命令修正: ```bash chown root:root /usr/lib/sudo/sudoers.so chmod 4755 /usr/lib/sudo/sudoers.so ``` 上述两条语句分别用于恢复正确的属主关系以及设定适当的安全位掩码值。 #### 方法三:调整特定服务账户属性 (针对非交互式用户) 像一些由服务器管理工具自动建立的服务型账号(例如宝塔环境里的 `www` 用户),它们往往不具备完整的 Shell 功能支持,默认情况下也无法直接调用高级别的特权指令。对此类情况可采取下面措施来增强灵活性并允许临时获取更高层次的操作许可: ```bash usermod -s /bin/bash www && usermod -g root www ``` 这里的第一部分改变了原有 login shell 类型以便于后续调试工作开展;而第二步则是把成员身份转移到超级用户群组里去实现授权目的。 #### 注意事项 - 执行以上任何一项修改之前,请务必确认自己拥有足够的全局控制能力——即本身已经是具备完全权利的状态下来实施这些变更动作。 - 修改完毕之后建议再次尝试发起请求看看问题是否得到妥善处理,并留意观察是否存在其他潜在隐患浮现出来。 --- ### 总结 综上所述,当遭遇普通用户不能正常使用 `sudo` 指令的情形时,可以从核查是否被列入合法使用者清单、排查核心组件状态完好程度以及优化专属角色定义这三个角度出发寻找对应办法加以应对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值