1 变更到其他用户
su username
su命令代表“switch user”(切换用户),并不是大多数人想象的“super user”(超级用户),能够让某个用户暂时以另一个用户的身份进行操作。当在shell中想快速成为root用户时,这个命令最常用,运行一两个命令,然后恢复到普通的非root用户。可以把它想象成Clark Kent变成他的超人形象的情形,纠正一些错误后,又变成普通人的样子。
调用su命令并不难。只要输入su,后面跟上你想要采用的用户身份就可以了。
$ ls
/home/scott/libby
$ whoami
scott
$ su gromit
Password:
$ whoami
gromit
$ ls
/home/scott/libby
例子中用了一个新命令,不过,实际上并没有广范使用,它就是whoami。它只是告诉你你是谁(就shell关心的用户来说)。这里用它来检验su命令是否按你所期待的那样工作。
1 变更到其他用户,包括其环境变量
su -l
只有在知道用户密码的情况下,su命令才起作用。没有用户密码,就不能切换用户。如果正常运行,你就会切换到用户在/etc/passwd文件中指定的shell,如sh、tcsh或者bash。大多数Linux用户只使用默认的bash shell,所以你可能不会看到有任何区别。在上一个例子中也要注意的是,当改变用户时目录并没有发生变化。从本质上来说,你已经变成了gromit,但使用的仍然是scott的环境变量。这好比是你发现了超人的衣服并穿上了它,看起来你像个超人了,但是还没有拥有超人的任何能力!
解决这个问题的办法就是使用-l(或--login)选项。
$ ls
/home/scott/libby
$ whoami
scott
$ su -l gromit
Password:
$ whoami
gromit
$ ls
/home/gromit
这个例子看起来与2.41节中的例子大概相同,但是本质内容区别很大。事实是你现在位于gromit的home目录,这就证明确实发生了变化。-l选项告诉su命令使用一个登录shell,好像gromit真正登录到机器中一样。现在你用的是gromit的名字,使用的也是gromit的环境变量,还位于gromit的home目录(就是gromit初次登录到这台机器后所在的位置)。这次就好像既穿上了超人的衣服,又拥有了超人一跃冲天的超能力。
3 变更成root用户
su
你可以使用su root,或者更好一些,使用su -l root,但是还有一种更快捷的方法。
$ whoami
scott
$ su
Password:
$ whoami
root
4 变更成root用户,包括其环境变量
su -
只输入su相当于输入了su root,即拥有了root的名义和能力,而且只有这些了。实际上,非root环境变量仍然存在,如下所示:
$ ls
/home/scott/libby
$ whoami
scott
$ su
Password:
$ whoami
root
$ ls
/home/scott/libby
当使用su –时,不但用户变更成了root,而且还使用了root的环境变量。
$ ls
/home/scott/libby
$ whoami
scott
$ su -
Password:
$ whoami
root
$ ls
/root
现在就好多了!在su后面附加“-”与su -l root的效果相同,但是输入的字符少一些。拥有了root的用户名、能力和环境,意味着你完全成为root用户了。对于计算机来说,root用户能够执行的任何操作,你也可以做。但是要记住,巨大的能力也会带来巨大的潜在危险,一定要小心操作。