在Linux系统中,su
和 sudo
都是用于权限管理的命令,但它们的用途和机制有显著区别。以下是详细对比:
exit
或 Ctrl+D
。bash
su # 切换到root(需root密码)
su - # 切换到root并加载其环境变量
su username # 切换到其他用户(需该用户密码)
/etc/sudoers
文件精细控制权限(可限制用户、命令、主机等)。/var/log/auth.log
)。bash
sudo command # 以root身份执行命令
sudo -u username command # 以指定用户身份执行
sudo -i # 切换到root的交互式Shell(需配置)
对比项 | su |
sudo |
---|---|---|
密码要求 | 目标用户的密码(如root密码) | 当前用户的密码 |
权限范围 | 完整Shell会话 | 单条命令(可配置扩展) |
安全性 | 需共享root密码,风险高 | 无需root密码,支持审计 |
配置灵活性 | 无细粒度控制 | 可通过/etc/sudoers 精细授权 |
典型使用场景 | 需要长期切换用户身份时 | 临时提权执行管理员命令 |
sudo
:su
适用场景:sudo su
的作用sudo su -
sudo
临时获取root权限后,再调用 su -
切换到root用户。sudo -i
,但依赖sudoers配置(需允许su
命令)。建议根据实际需求选择最安全、最简洁的方式。