在linux/unix系统里我们可以用两种方式切换到root用户权限。

1)直接输入su回车,切换到root用户权限。

2)用su -(即:空格加一横杠)回车,切换到root用户。

这两种方式有什么区别呢?

su只能切换到root用户权限,但环境变量还是切换前用户的环境变量。

而su-不但能切换到root权限,也切换到了root用户的环境变量。

主要区别在于切换后,环境变量不一样,正是因为环境变量不一样,就给我们操作带来

不变。

我举个例子说明一下:

一天,当我用badboy用户进行登陆linux系统,就在这时,我一朋友“乌贼”,想也登陆

进我的linux系统来玩玩,而事先我的linux系统里只有root和badboy用户,所以我们就

要建一个wuzei用户,以方便乌贼进来。

我们要填加wuzei用户,要用到useradd命令,useradd要root权限才可以执行。所以切换

到root权限。

接下来看看,我分别两种方法切换到root用户,再用useradd填加wuzei用户的操作。

1)方法 (以下//以及右边的文字是我标的注释,linux系统下执行是没有的)

login as: badboy //用badboy用户身份登陆linux系统

password:

Last login: Sat Dec 23 12:46:58 2006 from 192.168.145.1

[badboy@localhost ~]$ whoami //查看我当前的用户身份是谁?(badboy)

badboy

[badboy@localhost ~]$ pwd //查看我当前的工作目录(/home/badboy)

/home/badboy

[badboy@localhost ~]$ su //用“su”切换到root用户权限

Password:

[root@localhost badboy]# whoami //再次查看我当前的用户身份是谁?(改为root了)

root

[root@localhost badboy]# pwd //再次查看我当前的工作目录(还是/home/badboy)

/home/badboy

[root@localhost badboy]# useradd wuzei //填加wuzei用户

bash: useradd: command not found //结果填加失败,提示找不到useradd命令

[root@localhost badboy]# exit //退出root用户权限

exit

2)方法(以下//以及右边的文字是我标的注释,linux系统下执行是没有的)

[badboy@localhost ~]$ whoami //查看我当前的用户身份是谁?(badboy)

badboy

[badboy@localhost ~]$ pwd //查看我当前的工作目录(/home/badboy)

/home/badboy

[badboy@localhost ~]$ su - //用“su -”切换到root用户权限

Password:

[root@localhost ~]# whoami //再次查看我当前的用户身份是谁?(是root了)

root

[root@localhost ~]# pwd //再次查看我当前的工作目录(是/root了)

/root

[root@localhost ~]# useradd wuzei //填加wuzei用户(没提示出错,说明填加成功)

[root@localhost ~]# id wuzei //验证下是不是有wuzei用户

uid=503(wuzei) gid=503(wuzei) groups=503(wuzei) //显示wuzei用户的信息

可以看到两种操作中结果的不同之处了吧:

用方法1)切换到root权限,工作目录没变,环境变量当然没变,useradd也就直接执行

不了。如果硬是要想执行的话,useradd就必须是完全路径.useradd在/usr/sbin/目录下

则用:/usr/sbin/useradd wuzei 才可以正确执行。

这样写一串长的完全路径,显然麻烦了,影响工作效率。

而用方法2)切换到root权限,工作目录从/home/badboy也切换到了/root了,环境变量

也切换到root的环境变量了,所以useradd可以直接执行。

技巧提升:

其实我们不用切换到root身份,也可以做到需要root权限才可以做的工作,这就用到su

的一个“-c”参数了。

用法:su - -c "要root权限执行的命令"。看清楚了用法,

注意别写成:su -c "要root权限执行的命令" (这是错的)

所以我们可以如下操作,在用badboy身份登陆下,执行要root权限填加用户的工作了。

[badboy@localhost ~]$ su - -c "useradd wuzei"

Password: //提示要输入root密码。

[badboy@localhost ~]$ su -c "useradd wuzei" //这是错误的,完成不了工作。

作者:Badboy