su的全称并不是super user,而是switch user,是不是就突然明白了?是切换用户的意思。su的一般使用方法是su或者su -,两种方法虽然只差了1个字符,但也是有比较大的差异的。
网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于企业网站制作,高端网页制作,对塑料袋等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业营销推广优化,H5建站,响应式网站。
加入了-参数,就是login-shell的方式,也就是说切换到另一个用户之后,当前的shell会加载对应的环境变量和各种设置;
如果没有加入-参数,就是non-login-shell的方式,也就是说当前的shell还是加载切换之前的那个用户的环境变量以及各种设置。
如果不想因为切换到另一个用户导致自己在当前用户下的设置不可用,那么就可以用non-login-shell的方式;如果切换用户后,需要用到该用户的各种环境变量,那么使用login-shell方式即可。
su表示切换用户命令命令,如:
输入:su命令后回车表示切换当前的用户到root用户,或者:
输入:su - root(或者其他用户名)这里加了"-"后表示也切换的当前的环境变量到新用户的环境变量,su root(或者其他用户名)表示不切换环境变量到当前用户下。
sudo 表示获取临时的root权限命令,如:
sudo gedit /etc/shadow,表示临时使用root权限来编辑/etc/shadow密码文件,因为/etc/shadow密码文件需要使用root权限才能打开与编辑。所以这里使用了sudo命令临时使用root权限来做一些普通账户无法完成的工作~
Linux下 su命令与su - 命令的区别:
一、切换root身份不同
1、su命令:su只是切换了root身份,但Shell环境仍然是普通用户的Shell;而su -连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误,报command not found的错误。
2、su - 命令:su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。
二、采用su deploy命令后,取目标用户不同
1、su命令:su不会读取目标用户的环境配置文件,如图。
2、su - 命令:su - 读取目标用户的环境配置文件,如图。
综上总结:有“-”和无“-”各自的环境变量不同。
三、service命令
1、su命令:使用 su root 切换到root用户后,不可以使用service命令;
2、su - 命令:使用 su - 后,就可以使用service命令了。
四、用echo $PATH命令后,环境量不同
1、su命令:环境量变为usr。
2、su - 命令:环境量变为oracle。
su并不是真正地切换用户,它只是改变身份的一个命令而已,你可以把它当做一种嵌套,当你以root身份执行su yph命令时,下面的命令便会以yph用户的身份执行,但是值得注意的一点是当前的环境变量、工作目录等全都没有改变,也就是说仍在root使用的环境变量中,此时执行pwd查看当前工作目录应该会输出“/root”,当再以yph身份执行su - root命令后,你便又是以root身份执行命令了,可是此时的情况应该是:
root环境/yph身份/root身份
即当你输入logout时便会返回到:“/root环境/ypt身份”下,在此环境再输入logout则可能会显示“bash: logout: not login shell: use `exit'”,即当前yph用户所用的shell中没有logout,因为logout命令需要以root身份执行,此时正确的做法是执行exit命令,便会到退出到root下,即为刚进入root用户时的状态
su
命令
和su
-命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH
环境变量
错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su
-命令切换以后,工作目录变成root的工作目录了。用echo
$PATH命令看一下su和su
-以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su
-命令。如图:
1、内容不同:
su命令:用来切换用户,substitute英文含义“代替”的意思。
sudo命令:sudo为superuser do 的简写,即使用超级用户来执行命令,一般是指root用户。
2、用法不同:
su命令:不加用户名默认是切换为root用户,切当前目录不改变,其他环境变量不变。
sudo命令: 查看当前用户可以用sudo执行的命令都有哪些。
3、环境不同:
su命令:切换到root用户,但是并没有转到root用户家目录下,即没有改变用户的环境。
sudo命令:是当前用户切换到root,然后以root身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。
扩展资料:
su的参数:
-c指令或--command=指令:执行一个指令后就恢复原来的身份;
-f或--fast:使shell不用读取启动文件,适用于csh和tcsh;
-,-l,--login:切换用户时,使环境变量(home,shell,user,logname,path等)和欲切换的用户相同、不使用则取得用户的临时权限;
-m,-p,:变更身份时,保留环境变量不变;
-sshell,--shell=shell:指定执行命令的shell;
--help:显示帮助;
--version:显示版本信息;
用户账户:指定欲切换用户,默认切换为root。
参考资料:百度百科-su