背景:公司为安全考虑,对登陆服务器的权限进行了收归,所有人员必须使用普通用户登录服务器。如需使用root权限运维或定位问题,需执行命令
sudu su
或sudo su -
进行权限切换。
系统配置说明
CentOS 6.2
遇到的情况
由于需要使用root权限,在使用普通用户权限登陆机器后,使用sudo su
命令切换到root用户。
切换后发现之前给root用户配置的环境变量均不起效了,仔细想了想应该是由于使用su命令切换用户root用户的环境变量没有切换过来,所以这里对su
和su -
的区别进行简单梳理,防止遗忘。
su和su-的区别
su
:将用户角色由普通用户切换至root,但保留普通用户的shell环境
su -
:将用户角色由普通用户切换至root,并将shell环境切换为root的shell环境
两者的区别:
- shell环境不同:
su
使用的是原来普通用户的shell环境,su -
使用的是root用户的shell环境 - 命令执行后的工作目录不同:
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
总结
这里在使用过程中su
和su -
除了环境变量和工作目录不相同以外,其他内容均保持一致。
如需在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