在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