Linux系统中,有时候普通用户有些事情是不能做的,除非是root用户才能做到。这时就需要临时切换到root身份来做事了。
su
在Linux系统中,可以通过su命令来进行用户切换。可以从普通用户切换到root,也可以从root切换到普通用户。
直接运行su命令,用户从当前用户切换到root,需要输入root密码。
newer@ubuntu:~$ su
Password:
su: Authentication failure
root 没有配置密码,所以认证失败。
由于newer 是sudoer, 所以可以通过sudo passwd root 配置root密码
newer@ubuntu:~$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root 密码配置成功之后,可以su到root
newer@ubuntu:~$ su
Password:
root@ubuntu:/home/newer#
还可以su 回newer,从root用户切换到普通用户不需要输入密码。
root@ubuntu:/home/newer# su newer
newer@ubuntu:~$
你可以使用echo $LOGNAME来查看当前登录的用户名
newer@ubuntu:~$ echo $LOGNAME
newer
su 的语法为: su [-] username
后面可以跟”-”也可以不跟,普通用户su不加username时就是切换到root用户,当然root用户同样可以su到普通用户。
[图片上传中。。。(14)]
加”-“后会连同用户的环境变量一起切换过来。su test 后虽然切换到了test用户,但是当前目录还是切换前的/root目录,然后当用su - test时切换用户后则到了test的家目录/home/test。当用root切换普通用户时,是不需要输入密码的。这也体现了root用户至高无上的权利。
用su是可以切换用户身份,如果每个普通用户都能切换到root身份,如果某个用户不小心泄漏了root的密码,那岂不是系统非常的不安全?
没有错,为了改进这个问题,产生了sudo这个命令。使用sudo执行一个root才能执行的命令是可以办到的,但是需要输入密码,这个密码并不是root的密码而是用户自己的密码。
默认只有root用户能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的,即,使用visudo命令去编辑相关的配置文件/etc/sudoers。
默认root能够sudo是因为这个文件中有一行” root ALL=(ALL) ALL” 在该行下面加入” test ALL=(ALL) ALL”就可以让test用户拥有了sudo的权利。