Linux命令详解

Linux命令详解 - SU命令

root权限下:

  • 进入 mike 用户,环境不变 /root

    root@Mikelucis:~# su mike 
    mike@Mikelucis:/root$ pwd
    /root
    
  • 进入 mike 用户,环境改变 /home/mike

    root@Mikelucis:/home/mike# su - mike 
    mike@Mikelucis:~$ pwd
    /home/mike
    

普通用户下:

  • mike 用户下,su 无效无法切换到 root 用户下

     mike@Mikelucis:~$ su
     Password: 
     su: Authentication failure //权限不足
     mike@Mikelucis:~$ 
    
     mike@Mikelucis:~$ su - 
     Password: 
     su: Authentication failure //权限不足
     mike@Mikelucis:~$
    
  • mike 用户下,成功进入 root 用户(用 sudo 提升权限),环境不变 /home/mike

    mike@Mikelucis:~$ sudo su 
    [sudo] password for mike: 
    root@Mikelucis:/home/mike# pwd
    /home/mike
    
  • mike 用户下,成功进入 root 用户(用 sudo 提升权限),环境改变 /root

    mike@Mikelucis:~$ sudo su -
    [sudo] password for mike: 
    root@Mikelucis:~# pwd
    /root
    

总结:

su 命令内若加了 - 参数则会加载 root 的环境,与直接用 root 登陆相同。
因为这样便于执行 /sbin 文件夹或者 /usr/sbin 文件夹里的程序。
而普通用户一般 path 系统变量里是没有这两个路径的。

如果不加 - 的话就只是权限切换。
这里的 - 本身是一个参数,而不跟其它的程序一样把 - 作为参数开始的指示符。

归根结底,这个参数就是告诉 su 加载要切换的用户答的环境。
su - 如果后面不带用户名的话就是切换到 root ,如果带用户名就是切换到对应的用户。

原文地址:https://www.cnblogs.com/mikelucis/p/13225844.html