你知道su命令和su - 命令之间的细微区别吗?其实之前我也不知道(还以为是一样的呢),今天才发现,原来两者是有区别的。
1 . 示例一
[qs@qs ~]$ id
uid=500(qs) gid=500(qs) groups=500(qs)
[qs@qs ~]$ su
Password:
[root@qs qs]# id(使用id命令查看确实是root身份)
uid=0(root) gid=0(root) groups=0(root)
[root@qs qs]# env |grep qs
HOSTNAME=qs
HADOOP_HOME=/home/qs/single_point_hadoop/hadoop-2.6.4
USER=qs
MAIL=/var/spool/mail/qs
PATH=/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/apache-maven-3.3.9/bin:/usr/local/eclipse:/usr/jdk1.8.0_73//bin:/usr/jdk1.8.0_73//jre/bin:/usr/local/apache-storm-0.10.0/apache-storm-0.10.0/bin:/usr/local/zookeeper-3.4.8:bin:/home/qs/single_point_hadoop/hadoop-2.6.4/bin:/home/qs/bin:/home/qs/single_point_hadoop/hadoop-2.6.4/bin
PWD=/home/qs
LOGNAME=qs
[root@qs qs]# mail (竟然不是root用户的mail)
Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/qs": 5 messages
> 1 qs Fri Jul 22 16:57 15/496 "Output from your job 1"
2 qs Fri Jul 22 17:18 15/493 "Output from your job 4"
3 qs Fri Jul 22 17:26 15/493 "Output from your job 5"
4 qs Fri Jul 22 17:28 15/493 "Output from your job 6"
5 qs Fri Jul 22 17:30 69/1538 "Output from your job 7"
&
- 通过上面的例子我们可以看出:使用”su”命令切换为root用户的时候,系统使用的还是之前的用户的环境变量。那么,这样就会导致一个问题–很多属于root的指令没法直接执行,想要执行的话,只能使用命令的绝对路径。
2 . 示例二
[qs@qs ~]$ id
uid=500(qs) gid=500(qs) groups=500(qs)
[qs@qs ~]$ su - (使用"su -"命令而不是"su"命令)
Password:
[root@qs ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@qs ~]# env |grep qs
HOSTNAME=qs
[root@qs ~]# env |grep root
USER=root
MAIL=/var/spool/mail/root
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/apache-maven-3.3.9/bin:/usr/local/eclipse:/usr/jdk1.8.0_73//bin:/usr/jdk1.8.0_73//jre/bin:/usr/local/apache-storm-0.10.0/apache-storm-0.10.0/bin:/usr/local/zookeeper-3.4.8:bin:/root/bin
PWD=/root
HOME=/root
LOGNAME=root
XAUTHORITY=/root/.xauthbAQY3u
[root@qs ~]# mail
Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/root": 21 messages 17 new
1 Anacron Sun Mar 27 18:35 18/615 "Anacron job 'cron.daily' on qs"
2 Anacron Mon Mar 28 20:18 18/615 "Anacron job 'cron.daily' on qs"
3 Anacron Tue Mar 29 11:50 18/615 "Anacron job 'cron.daily' on qs"
4 Anacron Wed Mar 30 10:32 18/615 "Anacron job 'cron.daily' on qs"
>N 5 Anacron Thu Mar 31 10:30 17/604 "Anacron job 'cron.daily' on qs"
N 6 Anacron Sun Apr 3 10:17 17/604 "Anacron job 'cron.daily' on qs"
N 7 Anacron Tue Apr 5 09:27 17/604 "Anacron job 'cron.daily' on qs"
N 8 Anacron Fri Apr 8 14:35 17/604 "Anacron job 'cron.daily' on qs"
N 9 Anacron Tue Apr 12 10:30 17/604 "Anacron job 'cron.daily' on qs"
N 10 Anacron Tue Apr 12 11:17 17/604 "Anacron job 'cron.daily' on qs"
N 11 Anacron Thu Apr 14 19:10 17/604 "Anacron job 'cron.daily' on qs"
N 12 Anacron Fri Apr 15 13:30 17/604 "Anacron job 'cron.daily' on qs"
N 13 qs@qs.localdomain Sat Apr 16 22:02 16/601 "*** SECURITY information for qs ***"
N 14 Anacron Sun Apr 17 13:06 17/604 "Anacron job 'cron.daily' on qs"
N 15 Anacron Sat Apr 23 19:08 17/604 "Anacron job 'cron.daily' on qs"
N 16 Anacron Sat Apr 23 20:13 17/604 "Anacron job 'cron.daily' on qs"
N 17 Anacron Wed Apr 27 16:17 17/604 "Anacron job 'cron.daily' on qs"
N 18 Anacron Wed Apr 27 17:28 17/604 "Anacron job 'cron.daily' on qs"
N 19 Anacron Sat Apr 30 12:09 17/604 "Anacron job 'cron.daily' on qs"
N 20 Anacron Tue May 10 09:13 17/604 "Anacron job 'cron.daily' on qs"
N 21 Anacron Wed May 11 11:08 17/604 "Anacron job 'cron.daily' on qs"
&
- 通过这个例子和第一个例子的对比我们可以看到”su”命令和”su -“命令的不同之处了吧。
简单地说:”su”命令并没有真正切换到root用户;如果想要真正切换到root用户,应该使用”su -“命令。