Linux下su与su -命令的本质区别
大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行,这就需要从当前用户切换到root用户。Linux中切换用户的命令是su
或su -
。
su
命令和su -
命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH
命令看一下su和su -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。
总结就是:不带-的su不会读取目标用户的环境配置文件,带-的su才会读。
sudo、su、su –命令的区别
su、su - 需要知道root用户密码,su
保留当前用户环境变量, su –
切换为root用户环境变量。
sudo 被称为受限制的su ;sudo 是需要授权许可的,所以也被称为授权许可的su;通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的。sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的配置文件/etc/sudoers
来进行授权;
sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers
,属性必须为0411
。
参考:
https://linux.cn/article-8404-1.html
http://blog.51cto.com/fuwenchao/1340685
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 using1174@foxmail.com
文章标题: Linux下su与su -命令的本质区别
文章字数: 552
本文作者: Jun
发布时间: 2018-06-15, 11:28:00
最后更新: 2018-06-21, 15:19:48
原始链接: http://yoursite.com/2018/06/15/Linux下su与su-命令的本质区别/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。