插件窝 干货文章 Linux命令su和sudo的区别是什么

Linux命令su和sudo的区别是什么

密码 用户 root 切换 968    来源:    2025-04-24

在Linux系统中,susudo 都是用于权限管理的命令,但它们的用途和机制有显著区别。以下是详细对比:


1. su (Switch User)

  • 功能:用于切换到另一个用户身份(默认切换到root),需要输入目标用户的密码。
  • 特点
    • 直接切换到目标用户的Shell环境(完全继承其权限)。
    • 需要知道目标用户的密码(尤其是root密码),存在安全隐患。
    • 退出需输入 exitCtrl+D
  • 常用命令bash su # 切换到root(需root密码) su - # 切换到root并加载其环境变量 su username # 切换到其他用户(需该用户密码)

2. sudo (Superuser Do)

  • 功能:以其他用户(默认root)身份执行单条命令,需要输入当前用户的密码(而非目标用户密码)。
  • 特点
    • 通过 /etc/sudoers 文件精细控制权限(可限制用户、命令、主机等)。
    • 无需共享root密码,更安全(审计日志记录在 /var/log/auth.log)。
    • 默认权限持续5分钟(免重复输入密码)。
  • 常用命令bash sudo command # 以root身份执行命令 sudo -u username command # 以指定用户身份执行 sudo -i # 切换到root的交互式Shell(需配置)

核心区别

对比项 su sudo
密码要求 目标用户的密码(如root密码) 当前用户的密码
权限范围 完整Shell会话 单条命令(可配置扩展)
安全性 需共享root密码,风险高 无需root密码,支持审计
配置灵活性 无细粒度控制 可通过/etc/sudoers精细授权
典型使用场景 需要长期切换用户身份时 临时提权执行管理员命令

如何选择?

  • 推荐使用 sudo
    安全性更高(避免root密码扩散),适合日常管理(如Ubuntu默认禁用root,强制使用sudo)。
  • su 适用场景
    需要完整切换到另一个用户环境(如调试服务账户)。

补充:sudo su 的作用

sudo su - 
  • 利用 sudo 临时获取root权限后,再调用 su - 切换到root用户。
  • 效果等价于 sudo -i,但依赖sudoers配置(需允许su命令)。

建议根据实际需求选择最安全、最简洁的方式。