sudo · 管理员钥匙
上游:ls(查看文件前可能需要权限)· cd(进入受限目录) 下游:apt(安装软件必须 sudo)· chmod(改权限)· chown(改主人)· systemctl(管服务) 参见:chown(sudo 才能改文件主人)
一句话是什么
sudo 让你临时变成管理员执行一条命令,就像学校里借老师的门禁卡开一扇你平时进不去的门——用完就还。
为什么需要它
Linux 有三种人:
普通用户(aaron) → 只能动自己的文件
管理员(root) → 可以动所有文件、安装软件、改系统设置
sudo → 普通用户借一下 root 的权力,只用一次
为什么不直接用 root?
因为直接用 root 太危险。你一个手滑,rm -rf / 就能把整个系统删光。
sudo 要求你每次都确认,还会记日志,谁做了什么一清二楚。
# 普通用户尝试读 root 用户的主目录
$ ls /root
ls: cannot open directory '/root': Permission denied
# 借一下管理员权限
$ sudo ls /root
[sudo] password for aaron:
.bash_history .cache snap核心用法
公式
sudo [命令]
一行命令,sudo 放最前面,后面跟你要执行的任何命令。
常用场景表
| 场景 | 命令 | 说明 |
|---|---|---|
| 安装软件 | sudo apt install <名字> | apt 需要写入系统目录 |
| 编辑系统文件 | sudo nano /etc/hosts | 系统配置文件 aaron 无权写 |
| 查看受保护目录 | sudo ls /root | root 用户的主目录 |
| 改文件主人 | sudo chown aaron 文件 | 改别人的文件 |
| 切换到 root | sudo -i | 进入 root 会话(用完记得 exit) |
| 以 root 身份跑脚本 | sudo bash script.sh |
密码规则
- 第一次
sudo:要输密码(就是 aaron 的登录密码) - 之后 15 分钟内:不用再输
- 超时了:重新输
Linux 笑话
有个经典的 Linux 漫画:
妈妈:去把房间收拾干净!
孩子:不要。
妈妈:sudo 去把房间收拾干净!
孩子:好的,妈妈。
这不是笑话——这是 sudo 的本质。
“以权威身份重新发出命令”。
另一个真实事故:
有个初学者在 Stack Overflow 上看到一条命令可以解决他的问题,
然后发现要加 sudo 才能跑。他没仔细看,sudo 之后,
把系统重要文件删了,Ubuntu 直接崩了。
教训:sudo 之前,先看清楚命令在干什么。
例题精讲
📗 初探 Starter — 体验权限边界
任务:感受一下有 sudo 和没有 sudo 的区别。
# 第一步:不用 sudo,尝试看 root 用户的主目录
ls /root
# 结果:Permission denied
# 第二步:加上 sudo
sudo ls /root
# 输入你的密码,然后你能看到里面的内容了
# 第三步:查看自己有没有 sudo 权限
sudo -l
# 会列出你被允许做的所有 sudo 操作你学到了什么:/etc/shadow 是 Linux 存密码的文件,普通用户不能读。
sudo 让你临时获得读取权限。
📘 应用 User — 用 sudo 安装软件
任务:用 sudo 安装 htop,然后看它安装到哪里了。
# 安装
sudo apt install htop
# 安装完,找到可执行文件在哪
which htop
# 输出:/usr/bin/htop
# 为什么在 /usr/bin/?
ls -la /usr/bin/htop
# -rwxr-xr-x 1 root root ... /usr/bin/htop
# 注意:主人是 root,不是 aaron
# 但是所有人都可以执行(r-x 对应 others)你学到了什么:sudo apt install 把软件装到 /usr/bin/,这个目录属于 root,
但所有用户都能执行里面的程序。
📙 管理 Admin — 查看 sudo 操作日志
任务:查看系统记录了哪些 sudo 操作。
# 方法一:看认证日志
sudo cat /var/log/auth.log | grep sudo | tail -20
# 方法二:用 journalctl(更现代)
sudo journalctl -u sudo --since "today"你会看到:每次 sudo 的时间、用户、执行的命令。 即使你删了文件,日志还在——系统记得你做了什么。
你学到了什么:sudo 不只是权限工具,它还是审计工具。
服务器管理员用它追踪谁对系统做了什么。
官方文档参考
man sudo # 完整手册
sudo --help # 快速选项列表
sudo= superuser do,以指定用户(默认 root)身份执行命令,并记录审计日志。 在线:https://manpages.ubuntu.com/sudo
节点链接
上游(需要先了解这些)
同层(sudo 的好搭档)
下游(学会 sudo 之后更强大)
危险区域(学会之后慎用)
- shell-script ← sudo 跑脚本,影响整个系统