戊辰人博客

青,取之于蓝而青于蓝;冰,水为之而寒于水。

Linux中su与sudo、su – root的区别

日期:2017年1月11日 作者: 分类:运维 阅读:852

一、su 和 sudo 的区别

共同点:都是root用户的权限;

不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全取得root的权限和root的工作环境。

二、su – root 和 su root(su)的区别

su – root:表示人以root身份登录

just like login as root, then the shell is login shell,which mean it will expericene a login process,usually .bash_profile and .bashrc will be sourced

su root:表示与root建立一个链接,通过root执行命令

like you open an interactive shell in root name,then only .bashrc will be sourced.

最直接的区别就是su目录还是原先用户的目录,但是su或su – root后目录就变为root用户的主目录了。

注:su等同于su root

三、操作实践

为了不被操作系统中的个性化设置影响,我们先将 /root/.bash_profile 和 /root/.bashrc 中的内容全部注释,然后分别在这两个文件中增加变量:

  • /root/.bash_profile : WTF1=”.bash_profile”
  • /root/.bashrc : WTF2=”.bashrc”

接着分别通过su root和su – root查看不同

su root

su – root

可以看出,两种不同的切换方式所读取的变量文件不同。实际上,大多数系统会在 .bash_profile 中增加下列脚本:

if [ -f ~/.bashrc ];then
    . ~/.bashrc
fi

上面的脚本就是检测当前用户目录下有没有 .bashrc 文件,有的话将其中的环境变量读取出来。

总结:大多数情况下,su root 和 su – root 在使用上不会感觉区别,但在内部,它们的登录模式是不同的,所读取的环境变量也不同;su root 切换时还会保留切换前用户的环境变量,而 su – root 则相当于一个新的用户登录系统,是一个纯净的root用户的环境变量。而大多基本全部的的Linux发行版都会在 .bash_profile 中增加一些个性化设置以保证环境变量的完整,所以建议养成使用 su – root 的习惯。

标签:,

除非注明,戊辰人博客文章均为原创,转载请以链接形式标明本文地址

本文地址:https://wanglu.info/1237.html

1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注