su 切换用户

Linux系统中,有时候普通用户有些事情是不能做的,除非是root用户才能做到。这是就需要心事切换到root身份来做事了。下面做一个小实验,创建“test”账户,并修改其密码,这样我们就可以使用test账户登录Linux了。

[root@qiangzi ~]# useradd test

[root@qiangzi ~]# passwd test

更改用户 test 的密码 。

新的 密码:

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新。

然后用test账户登录Linux。

login as: test

[email protected]'s password:

[test@qiangzi ~]$ whoami

登录后,使用“whoami”命令查看当前用户是test。普通用户root用户的shell提示符号有些区别。root账户是#,普通用户$.

命令 su

语法:su [-] username

后面可以跟“-”,也可以不跟。普通用户su不加username时就是切换到root用户,当然root用户同样可以su到普通用户。“-”这个字符的作用是,加上后会初始化当前用户的各种环境变量。

下例中说明加与不加“-”的区别;

[test@qiangzi ~]$ pwd

/home/test

[test@qiangzi ~]$ su

密码:

[root@qiangzi test]# pwd

/home/test

[root@qiangzi test]# exit

exit

[test@qiangzi ~]$ su -

密码:

[root@qiangzi ~]# pwd

/root

如果不加“-切换到root账户下时,当前目录没有变化。而加上“-切换到root账户后,当前目录为root账户的家目录。加上“-”根直接登录root账户是一样的。当用root切换普通用户时,是不需要输入密码的。

我们也可以在root登录时直接以某个普通用户的身份去执行一条命令,用在脚本中比较合适。

[root@qiangzi ~]# su - test -c "touch /tmp/1.txt"

[root@qiangzi ~]# ls -l /tmp/1.txt

-rw-rw-r-- 1 test test 0 12月 26 23:55 /tmp/1.txt

我们可以看到/tmp/1.txt的所有者和属组都是test