1、内容不同
成都创新互联是一家以成都网站建设公司、网页设计、品牌设计、软件运维、seo优化排名、小程序App开发等移动开发为一体互联网公司。已累计为成都玻璃钢雕塑等众行业中小客户提供优质的互联网建站和软件开发服务。
su命令:用于切换用户,substitute英文含义“代替”的意思。
sudo命令:为superuser do 的简写,即使用超级用户来执行命令,一般是指root用户。
2、用法不同
su命令:不加用户名默认是切换为root用户,切当前目录不改变,其他环境变量不变。
sudo命令:查看当前用户可以用sudo执行的命令都有哪些。
3、环境不同
su命令:切换到root用户,但是并没有转到root用户家目录下,即没有改变用户的环境。
sudo命令:是当前用户切换到root,然后以root身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。
su和sudo各有优点,适当用于预期的用例时,两者都表现不俗。我偏爱用su处理自己的大部分工作,因为它最适合我和我的工作流程。
Linux su,全拼:switch user,命令用于变更为其他使用者的身份,除root外,需要键入使用者的密码。
使用权限:所有使用者
语法:
su [参数] [-] [用户帐号]
参数说明:
-f或者--fast不必读启动档,仅用于csh或tcsh
-m -p或者-preserve-environment执行su时不改变环境变数
-c command或者--command=command变更为账号为USER的使用者并执行指令后再变回原来使用者
-s shell或者--shell=shell指定要执行的shell,预设值为/etc/passwd内的该使用者shell
-help 显示说明文件
--version 显示版本资讯
-
-l或者--login这个参数加了之后,就好像是重新login为该使用者一样,大部分环境变数都是以该使用者为主,并且工作目录也会改变,如果没有指定USER,内定是root
USER 欲变更的使用者账号
ARG 传入新的shell参数
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在Fedora上有的很多,你只要知道两个就可以了。
1.su
可以让你从普通账户切换到root账户
2.su -c '命令'
可以以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。