解决普通用户无法使用sudo指令的问题

解决普通用户无法使用sudo指令的问题

sudo 指令是允许 普通用户 临时 以 超级用户 root 的权限运行。

普通用户如果没有配置而直接使用 sudo 指令:系统会提示没有权限(如下图)
在这里插入图片描述

使用sudo时系统提示:
ryan is not in the sudoers file. This incident will be reported.
言下之意时当前用户没有执行 sudo 指令的权限。

如果我们想要让 当前用户执行 sudo 指令,就需要进行设置,使当前用户拥有权限:

具体步骤为:

  1. 首先我们需要切换到 root 账号

在这里插入图片描述

执行 su - 切换至 root 账户,输入密码

ps:这里要注意,在Linux下输入密码是不会回显的,输完密码回车即可

在这里插入图片描述

可以看到当前已经由 普通账户ryan 切换为 root账户

  1. 使用文本编辑器 vi 打开 sudoers
    如果有vim编辑器的话使用vim也是可以的,操作上没有区别
    输入以下命令打开这个路径下的文件
vi /etc/sudoers   //使用vi

如果是 vim 编辑器就把上面指令的第一个 vi 替换为 vim
在这里插入图片描述
打开后进入如下界面

在这里插入图片描述

打开后不要乱按键盘,我们需要保证处在命令模式下

  1. 按下 shift 和 ;进入末行模式(即shift 和 分号健)
    按下 shift 和 ;后会进入末行模式,此时最下面会出现一个冒号

在这里插入图片描述

在这里输入 set nu 后回车,我们显示行号(效果如下)

在这里插入图片描述
此时我们看到了旁边每一行都有了对应的行号
这时我们可以按 ↓ 慢慢让光标下移至 100 行 ,也可以用字母 J 健(下移)和字母 K 健(上移)进行上下移动
我们下移动至第100行处(不同Linux 版本可能有所不同,1810版本在第100行处)

在这里插入图片描述

我们可以看到这样一行
root ALL=(ALL) ALL

此时我们把光标移动到 101行,按下 i 健,进入插入模式,此时左下角就会显示 – INSERT –

在这里插入图片描述
我们输入普通用户的用户名,我这里是 ryan,后面的内容与第100行一致
如下图:
在这里插入图片描述

然后我们按键盘左上角的 ESC 健
此时下面的-- INSERT – 就消失了
在这里插入图片描述

我们再按下 shift 和 ;进入末行模式
输入 wq! 再回车。(意思为强制保存并退出)

在这里插入图片描述
保存后回到原先的界面
我们输入 su - 普通账户用户名
在这里插入图片描述
回车后返回到普通账户
在这里插入图片描述
此时就能够使用 sudo 命令了

### 用户无法执行 `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
发出的红包

打赏作者

Ryan.Alaskan Malamute

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值