美文网首页
【Linux-运维】su和su -的区别

【Linux-运维】su和su -的区别

作者: blue_smile | 来源:发表于2017-04-07 17:59 被阅读0次

    背景:公司为安全考虑,对登陆服务器的权限进行了收归,所有人员必须使用普通用户登录服务器。如需使用root权限运维或定位问题,需执行命令sudu susudo su -进行权限切换。

    系统配置说明

    CentOS 6.2

    遇到的情况

    由于需要使用root权限,在使用普通用户权限登陆机器后,使用sudo su命令切换到root用户。
    切换后发现之前给root用户配置的环境变量均不起效了,仔细想了想应该是由于使用su命令切换用户root用户的环境变量没有切换过来,所以这里对susu -的区别进行简单梳理,防止遗忘。

    su和su-的区别

    su:将用户角色由普通用户切换至root,但保留普通用户的shell环境
    su -:将用户角色由普通用户切换至root,并将shell环境切换为root的shell环境
    两者的区别:

    1. shell环境不同:su使用的是原来普通用户的shell环境,su -使用的是root用户的shell环境
    2. 命令执行后的工作目录不同:su命令执行后会将目录切换至原普通用户的工作目录,su -命令执行后会将目录切换至root用户的目录
    [test@Storm-Test ~]$ sudo su 
    [root@Storm-Test /data/home/test]# echo $PATH
    /sbin:/bin:/usr/sbin:/usr/bin
    [root@Storm-Test /data/home/test]# pwd
    /data/home/test
    [root@Storm-Test /data/home/test]# exit
    [test@Storm-Test ~]$ sudo su -
    [root@Storm-Test ~]# echo $PATH
    /root/zale/tools/:/usr/local/jdk1.7.0_25/bin:/usr/local/Zookeeper/bin:/usr/local/apache-maven-3.0.5/bin:/usr/local/apache-storm-0.9.2-incubating/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
    [root@Storm-Test ~]# pwd
    /root
    

    总结

    这里在使用过程中susu -除了环境变量和工作目录不相同以外,其他内容均保持一致。
    如需在su的情况下刷新环境变量,执行命令source /etc/profile即可,效果如下。

    [test@Storm-Test ~]$ sudo su
    [root@Storm-Test /data/home/test]# echo $PATH
    /sbin:/bin:/usr/sbin:/usr/bin
    [root@Storm-Test /data/home/test]# source /etc/profile     
    [root@Storm-Test /data/home/test]# echo $PATH         
    /root/zale/tools/:/usr/local/jdk1.7.0_25/bin:/usr/local/Zookeeper/bin:/usr/local/apache-maven-3.0.5/bin:/usr/local/apache-storm-0.9.2-incubating/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
    

    相关文章

      网友评论

          本文标题:【Linux-运维】su和su -的区别

          本文链接:https://www.haomeiwen.com/subject/dywhattx.html