0%

Linux下su和sudo命令的区别

susudo是Linux中两个最常用的切换到root用户的命令,虽然功能类似,但在使用上还是有不少差异。

su命令

su是切换到root用户的传统命令,其主要用法是:

  • su:不带参数直接输入su将切换到root用户,需要输入root密码
  • su -:等同于su -l,切换到root用户并启用root的环境变量(等同于以root身份登录,而su在切换到root用户之后依然保留原始用户的环境变量)
  • su -l 用户名:切换到其他用户,需要输入该用户的密码
  • su -c 命令:以root用户的身份执行命令,类似于sudo,不同之处是需要输入root密码

su命令主要用来切换root身份,前提是需要知道root密码

sudo命令

sudo可以在不泄露或不设置root密码的前提下让用户执行特权命令,并且sudo提供命令历史记录。sudo一些常见用法:

  • sudo 命令:以root身份执行命令,命令需要在默认PATH路径下,否则会出现错误提示
  • sudo -i:以root身份登录
  • sudo -s:一般等同于sudo bash,进入root环境,但不改变工作目录
  • sudo su:以sudo方式执行su命令

su和sudo的主要区别

  1. su可以不带参数执行,sudo不行
  2. su获取root权限时输入的是root密码,而sudo需要输入的是用户密码
  3. 当root密码未设置时,sudo能获取root权限,su不行
  4. 只有/etc/sudoers(操作系统:Ubuntu 20.04 LTS;Ubuntu其他版本或其他发行版可能略有不同)文件中的用户才能使用sudo命令;任何人都能使用su命令
  5. su可以切换到其他用户,sudo只能切换到root用户(虽然sudo su -l 用户名也可以切换到其他用户,但这是su的能力)
  6. sudo只允许使用root权限运行个命令,su会在终端的当前会话中打开一个子会话,同时允许使用root权限运行尽可能的命令,直至退出

本文整理自

Linux系统su和sudo命令的区别

深入理解 sudo 与 su 之间的区别