Linux系统中的su和sudo命令

1,384 阅读2分钟

1. su 命令

su,全称switch user,即用于切换用户身份的命令。 su命令在切换用户身份时需要验证新的身份,即输入切换到用户的密码。

1.1 su命令表达式

su [-] <username>
  1. su : su命令后可以不跟任何参数,即参数缺省状态,此时会默认执行su root命令,切换到root用户,并输入root用户的密码进行验证

    image.png

  2. su root:su命令后跟用户名,表示切换到指定用户,如果有密码需要验证用户密码信息

    image.png

  3. su - root:使用带-的命令同样也是切换到指定用户,如果有密码需要验证

    image.png

1.2 su rootsu - root的区别

我们已经知道了不带参数的su命令实际上就是执行了su root命令,那su rootsu - root命令都是切换到指定的root用户,有什么区别呢。

  • -:如果使用了该选项,则命令会以login-shell的方式切换到指定用户,切换完成后会更新环境变量为新用户的设置信息 对于环境变量的变化,我们可以通过pwd命令查看当前用户路径的方式来查看是否变化
  1. 使用su root命令切换用户,pwd信息没有更新

    image.png

  2. 使用su - root命令切换用户,pwd信息更新到新用户设置,并且会显示相关登录信息

    image.png

2. sudo 命令

sudo,全称是super user do,即使用超级用户的方式执行一些命令,一定要注意susudo是完全不同的涵义。

2.1 sudo命令表达式

sudo [选项] [命令]

在使用sudo命令时,有些用户可能会因为没有权限而报错”用户不在sudoers文件中,此事将被报告“,可以查看错误解决方法:juejin.cn/post/699371…

  1. sudo [-i/-] root:该命令也用来切换当前用户到root用户,但是与su命令不同的是,sudo命令切换用户时需要验证的是切换前用户的密码信息

    image.png

  2. sudo su:这个命令是平时执行linux命令最长用的了,用来使用最高权限执行相关命令,其本质含义就是对su命令进行提权,使用时同样需要输入当前用户的密码进行认证。

    image.png

3. 两者的使用区别

对与su和sudo命令的区别,可以简单总结为以下几点

  • su命令是switch user,用来切换用户,切换时需要提供将要切换用户的密码
  • sudo命令是super user do,用于对命令进行权限提升,也可以用来切换用户,使用时需要认证当前用户的密码,sudo命令执行时要求用户具有一定的权限