您的位置:首页 > 运维架构 > Linux

谈谈su和su - 切换到root权限的区别?

2013-11-06 12:50 525 查看
在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用户权限exit2)方法(以下//以及右边的文字是我标的注释,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引用地址:http://user.qzone.qq.com/284914889 欢迎转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux root权限