[Linux基础——Lesson10.Linux环境下普通用户 sudo 提权]
前言
本次博客我将会手把手带大家快速解决 Linux 下用不了sudo命令的问题,相信看完的小伙伴都能解决该问题。那么废话不多说,开始我们今天的内容。
一、什么是 sudo 指令?
理解 sudo 指令
1️⃣sudo
指令的核心本质
sudo
是 Superuser Do(以超级用户身份执行)的缩写,它的核心价值是 “权限精细化管控”—— 既避免普通用户直接使用root
账号(减少误操作风险),又能让普通用户在需要时临时获取特定高权限,无需切换到root
账号(提升操作效率)。- 比如普通用户执行
apt install xxx
(安装软件)时会提示 “权限不足”,但加上sudo
后(sudo apt install xxx
),输入自己的密码验证通过,就能以root
权限完成安装,无需先执行su root
切换账号。
2️⃣sudo
与su
的关键区别(为什么不用su
而用sudo
?)很多初学者会混淆
sudo
和su
(切换用户指令),两者的核心差异在于 “权限范围” 和 “安全性”,具体对比如下:
特性 sudo su 权限范围 仅当前指令拥有 root
权限切换到 root
后,所有操作都有root
权限验证方式 输入当前普通用户的密码 输入 ** root
账号的密码 **安全性 低风险(权限仅作用于单条指令) 高风险(易因误操作删除系统文件) 适用场景 临时执行高权限指令(安装、配置) 需长期以 root
身份操作(极少用)
3️⃣sudo
的常见使用场景
安装 / 卸载软件:
几乎所有 Linux 发行版(Ubuntu、CentOS 等)安装软件都需要root
权限,例如:
- Ubuntu/Debian 系统:
sudo apt install 软件名
(安装)、sudo apt remove 软件名
(卸载)- CentOS/RHEL 系统:
sudo yum install 软件名
(安装)、sudo yum remove 软件名
(卸载)修改系统配置文件系统核心配置文件:
(如/etc/profile
、/etc/hosts
)默认只有root
能修改,普通用户需用sudo
编辑,例如:sudo nano /etc/hosts
(用nano
编辑器修改 hosts 文件)管理系统服务启动、停止、重启系统服务:
(如 Apache、MySQL)需要root
权限,例如:sudo systemctl start apache2
(启动 Apache 服务)查看 / 操作高权限文件
某些系统日志文件(如/var/log/syslog
)只有root
能读取,普通用户需用sudo
查看:sudo cat /var/log/syslog
(查看系统日志)
4️⃣sudo
的重要特性(你可能不知道的细节)1.密码缓存机制
输入一次
sudo
密码后,系统会缓存权限约 5 分钟(默认值),期间再次使用sudo
无需重复输密码,5 分钟后自动失效(需重新验证)。
- 手动取消缓存:执行
sudo -k
(立即失效,下次用sudo
需重新输密码)。2.权限管控文件:
/etc/sudoers
不是所有普通用户都能使用
sudo
—— 只有在/etc/sudoers
文件中被 “授权” 的用户,才能执行sudo
指令。
- 编辑该文件必须用
sudo visudo
命令(不能直接用nano
或vim
,visudo
会自动检查语法,避免改错导致sudo
失效)。- 常见授权格式:
用户名 ALL=(ALL:ALL) ALL
(表示 “该用户可在所有主机上,以所有用户身份,执行所有命令”,Ubuntu 中默认给初始用户此权限)。3.限制特定命令的权限
管理员可通过sudoers
文件,只允许普通用户用sudo
执行特定命令(而非所有命令),例如:
user1 ALL=(ALL:ALL) /usr/bin/apt install
(仅允许user1
用sudo
执行apt install
,不能执行其他高权限命令,进一步提升安全性)。5️⃣常见错误与解决
如果执行
sudo
时提示xxx is not in the sudoers file. This incident will be reported.
(用户不在 sudoers 文件中),说明当前用户未被授权使用sudo
,解决方法:
- 切换到
root
账号:su root
(输入root
密码);- 编辑
sudoers
文件:visudo
;- 在文件末尾添加一行:
当前用户名 ALL=(ALL:ALL) ALL
;- 保存退出(
visudo
用Ctrl+O
保存,Ctrl+X
退出),之后切换回普通用户即可使用sudo
。
安装 sudo 指令
在root用户下的操作指令:
yum install -y sudo
二、为什么普通用户无法使用 sudo 命令?
在linux中 root 的权限非常大,比如我们常开玩笑的命令 rm -rf /,这都是可以直接执行的。而且在Linux中没有回收站这一说,这就造成一旦执行了错误的命令,产生的代价将会非常大。
所以普通用户要受权限影响,只有被root用户添加到信任列表里面的人才可以用sudo命令,因为root用户也怕你拿着他的权限去到处瞎搞。例如:
sudo ls -l //就是以root权限查看当前目录里的内容
- 但是,如果是新创建的普通账户,一般来说一开始是不能执行
sudo
命令的:
- 根据提示,WD 这一用户并不在sudoers这个文件中,因此没有使用sudo的权利
- suduers文件位于路径/etc/sudoers
- sudoers这个文件为root账户所属。这个文件相当于一个白名单,在这个文件里的用户才可以使用sudo命令,如果不在sudoers文件里,就无法使用sudo提权,来暂时获得root的权利
- 如果要将普通用户添加到sudoers文件中,那就需要进入root账户进行操作
三、如何将普通用户添加到信任列表里面
🎈前提
- 只有root用户才能将某个普通用户添加到信任列表里面,因为sudo命令的功能就是,将sudo后面的命令以root权限级别来执行,你想使用root的权限,肯定要先征求root用户的同意才行。所以只有root用户才能将普通用户添加到信任列表里面,root用户将当前普通用户添加到信任列表里面后,当前普通用户就可以使用sudo命令了。
- 注意:添加信任用户还必须掌握一些vim的基本命令,如果还有不熟悉vim的小伙伴可以去看看我这篇文章:[Linux基础——Lesson4.Vim编辑器]
🧐 解决方案
- 首先,进入
root
账户:
- 接着,进入目录
/etc
:
- 然后,用vim打开文件
sudoers
:命令:vim sudoers
可以看到如下界面:
看起来很复杂,所以我们先设置一下行数:
- 操作1:shift + :
- 操作2:命令:set nu
- 找到对应的位置
找到 /etc/sudoers 文件100行左右,“## Allows people in group wheel to run all commands” 所在的那几行。
- 接着,输入字符
i
,进入插入模式:- 然后,根据上面黄色框所框出来部分的格式,将要添加的普通用户写入即可:
其实第 99 行“Allows people in group wheel to run all commands”这句话的意思就是 “允许wheel组中的人运行所有命令”,所以你只需要将你想要信任的用户添加到wheel组中即可。
- 按照以下格式写入。
用户名 ALL=(ALL) ALL
- 最后,先按
Esc
键,进入命令模式,再按冒号:
,即shift + ;
进入底行模式,在底行模式下输入wq!
强制保存退出- 注意:一定要是英文状态下的符号
🍑 检验正确性
- 我们回到普通账户来检验是否可以使用
sudo
命令:
- 可以看到,原来不能使用
sudo
提权命令的普通账户,经过修改后就可以正常使用sudo
命令了。
四、结束语
以上就是我对 sudo 提权 的理解,
感谢你的三连支持!!!