su
su: switch user。切換成其他使用者,預設是root,不同的option有不同的結果,見下述。因其切換到其他使用者,所以需其密碼。好像還蠻合理,但若是切換到root,那不就要root的密碼! 這顯然不太妙。因此多人使用的系統,就會難以管理,建議使用sudo來解決這個問題。這是其一,有些user是屬於nologin的,也就無法切換,此其二。
su的用法如下:
su -: 這是指登入到root,需打root的密碼,屬於login shell,因此是有login的重作,有沒有login會有些影響,如環境變數。
su -l: 也是有login,但是登入到另一個使用者
user@user-ubuntu:~$ su -l smbguest
Password:
smbguest@user-ubuntu:~$ exit
logout
user@user-ubuntu:~$ su smbguest
Password:
smbguest@user-ubuntu:/home/user$ exit
exit
一個是logout,一個是exit,可看出其登入與否,有興趣的話,可以比較一下環境變數的差異。
該檔案內容為:
# User privilege specification
帳號 來源主機 可切換為 可執行
root ALL = (ALL) ALL
這個意思是root這個帳號,不管是從哪裡連進來,都可以切換成系統上所有的使用者,且可執行所有命令。因此也可把自己的帳號加進去,就變成
root ALL=(ALL) ALL
user ALL=(ALL) ALL
帳號的部份也可以是group,用%識別,如%group1。
懶的打密碼,也可以這樣寫
user ALL=NOPASSWD: ALL
但每次要切成root時,都要加個一sudo,很煩,常常容易忘記。可以把sudo 與 su組合,變成sudo su,直接切換為root,並使用自己的密碼,當然前提是/etc/sudoers要讓自己有這個權限啦!
最後,要記得login shell的問題,sudo su與sudo su -是不同的:
user@user-ubuntu:~$ sudo su
root@user-ubuntu:/home/user# exit
exit
user@user-ubuntu:~$ sudo su -
root@user-ubuntu:~# exit
logout
最最後,sudo的expire time是5分鐘。5分鐘內,使用sudo只在第一次需要敲密碼。