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的權利。