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

日期:2017年01月11日 作者: 分类:运维 浏览:7521

一、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/2017/01/1237.html