Linux 中 sudo 和 su 有什么区别?

在学习 Linux 系统的过程中,经常需要在普通用户和 root 用户之间来回切换。只要我们有了 root 权限,就能完成许多普通用户权限下无法完成的操作。那么,我们究竟该如何在这两种身份之间自由转换呢?
答案很简单的:用 sudo 或者 su 命令就行。
此时对于新手来说产生了疑惑:什么时候该用 sudo?什么时候又该用 su 呢?这两个命令在使用上又存在哪些差异呢?
如果想彻底弄明白 Linux 系统里 sudo 和 su 这两个关键命令的不同之处,以及它们各自适用的场景,那就跟着码云笔记继续往下了解吧。希望我的分享能给大家带来一些实用的收获~
讲讲基础定义
在讲它俩有什么区别之前前,要先弄懂它俩的核心作用:
- su:英文全称是 switch user(切换用户),作用是切换到另一个用户身份,它默认切换到 root(也就是超级用户),切换后会完全拥有该用户的所有权限。
- sudo:英文全称是 superuser do(以超级用户执行),作用是临时以高权限(默认 root)执行单个或者多个命令,不会完全切换用户身份。
sudo 与 su 的核心区别是什么?
su
- 认证方式:需要输入目标用户的密码,默认是 root 的;
- 权限范围:切换之后,可以获得目标用户的全部权限,直到退出;
- 安全风险:知道 root 密码就能完全控制系统,这样太危险;
- 审计追踪:你的所有操作都记在 root 名下,无法追溯是谁干的;
- 环境变量:切换后默认继承原来用户的环境,只有加 su -才加载目标用户环境;
- 配置灵活性:只要有密码就能切换。
sudo
- 认证方式:需要输入当前用户自己的密码,但有个前提条件,当前用户在 sudoers 配置中;
- 权限范围:只能为指定的命令赋予高权限,默认单次有效,但是时长可配置;
- 安全风险:可以精细的控制哪些用户能执行哪些命令,风险比较低;
- 审计追踪:会记录哪个用户执行了哪些 sudo 命令,出问题可以追踪;
- 环境变量:默认保留当前用户环境,加
sudo -i可加载 root 环境; - 配置灵活性:它的灵活性相当高,可通过
/etc/sudoers配置用户权限。
以下是很关键的区别详解,对于新手要重点看看:
1、注意密码和权限
- 用 su 切换到 root,必须知道 root 的密码 —— 这意味着任何人拿到 root 密码,都能完全掌控系统,风险极高(比如多人共用 root 密码,出问题无法追责)。
- 用 sudo 执行高权限命令,只需要输入自己的密码,且管理员可以通过 /etc/sudoers 限制你只能执行特定命令(比如只允许你用
sudo apt update,但不能删文件),权限可精准管控。
举一些示例,大家可以作为参考:
# === su 的用法 === su # 切换到 root,但保留当前用户的环境变量(不推荐) su - # 切换到 root 并加载 root 的完整环境(推荐,等同于登录 root) su - dachongzi # 切换到普通用户 dachongzi(需要 dachongzi 的密码) exit # 退出 su 切换的用户,回到原用户 # === sudo 的用法 === sudo ls /root # 临时以 root 权限查看/root 目录(输入自己的密码) sudo -i # 切换到 root 的 shell(输入自己的密码,替代 su -,更安全) sudo -u dachongzi mkdir /home/dachongzi/test # 以 dachongzi 身份创建目录(需配置 sudoers) sudo -l # 查看当前用户有哪些 sudo 权限
2、安全与审计的差异
Linux 系统会把 sudo 的所有操作记录在/var/log/auth.log(Debian/Ubuntu)或/var/log/secure(CentOS/RHEL)中,比如:

这个截图上能清晰看到”perfect 用户在TTY=pts/0终端上执行过/usr/bin/cat auth.log“,而 su 的操作只会记为 root 的行为,无法追溯是谁操作的。
那什么时候用 su?什么时候用 sudo?
举一些用 sudo 的场景:
- 日常执行单个高权限命令,比如安装软件
sudo apt install nginx、修改系统配置; - 多人管理的服务器,避免共享 root 密码;
- 需要审计操作记录的场景。
个人觉得用 su 的场景很少很少:
- 临时需要长时间以 root 身份操作(但更推荐
sudo -i替代); - 切换到普通用户测试权限(如
su - dachongzi)。
这里需要注意下:Ubuntu 等系统默认禁用 root 密码(无法直接 su),必须用sudo -i或sudo passwd root设置 root 密码后才能用 su,这也是为了强制使用更安全的 sudo。
在 Linux 的世界里,sudo 和 su 如同两把钥匙,一把精准灵活,一把直接强大。sudo 以“最小权限原则”为核心,让管理员能够精细控制每个用户的操作边界,既保障了系统安全,又留下了清晰的审计痕迹;而 su 更像一把“万能钥匙”,简单直接,但稍有不慎就可能让整个系统暴露在风险之下。
对于日常使用,尤其是多人协作或服务器管理场景,sudo 将是更优的选择——它让权限管理变得可控、可追溯,也让团队协作更加安全高效。而 su 则更适合那些需要彻底切换用户身份的特殊场景,比如测试权限或紧急修复,但即便如此,sudo -i 也能提供更安全的替代方案。
最终的选择,取决于你对安全、便利和可控性的权衡。但无论如何,掌握这两者的差异,都能让你在 Linux 的世界里更加游刃有余,少走弯路。
以上关于Linux 中 sudo 和 su 有什么区别?的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » Linux 中 sudo 和 su 有什么区别?
微信
支付宝