1. su命令用法
- su是最簡單的身份切換命令,可以進行任何身份的切換。
- [su ]命令將身份切換到root,但是需要輸入root密碼,以non-login shell的方式讀取變量,這種方式很多原本的變量不會改變,尤其是path,由于沒有變成root的環境,因此很多root慣用的指令只能用絕對路徑來執行。
- [su - 或 su -l username]命令將身份切換到特定用戶,但是需要輸入該用戶密碼,不加用戶名表示切換到root用戶,輸入root密碼。
- [su - -c 指令]命令已root用戶執行命令,且執行完畢后恢復原本的身份。
- 使用root切換到任務用戶,不需要輸入密碼。
2. sudo命令用法
- 相對su命令,sudo的執行僅需要輸入用戶自己的密碼即可,甚至可以設定不需要輸入密碼即可執行命令,并非所有人都能夠執行sudo,且僅有規范到/etc/sudoers內的用戶才能夠執行sodu命令。
- [sudo 指令 或 sudo -u username 指令]表示以某用戶的環境執行命令, 不加用戶表示以root用戶的身份執行。
- sudo執行流程:
3.1 當用戶執行sudo時,系統在/etc/sudoers檔案中搜索該使用者是否具有 sudo執行權限;
3.2 若使用者具備可執行的sudo權限后,便讓使用者【輸入自己的密碼】來確認;
3.3 若密碼輸入成功,便開始執行sudo后續的指令(root執行sudo時無需輸入密碼);
3.4 若切換者的身份與執行者相同時,也無需輸入密碼。- sudo執行失效為5分鐘,超過5分鐘需要重新輸入密碼。
3. visudo與/etc/sudoers
若要非root用戶執行root權限,則root需要先使用visudo命令編輯/etc/sudoers文檔,讓該賬號用戶全部或部分root權限。為什么要使用visudo,這是因為/etc/soduers具有語法限定,如果設定錯誤會造成設置失效,因此才使用visudo命令去編輯,編輯結束離開文件時,系統會去檢測文件的語法。
編輯步驟如下:
- 輸入root賬戶下輸入visudo,或非root賬戶具備sudo權限的賬戶輸入:sudo visudo。
- 進入編輯模式,在root行下面新增一行:
root ALL=(ALL) ALL
test ALL=(ALL) ALL
上面一行四個組件的意思是:
2.1 系統的哪個賬號可以使用 sudo 指令,默認為 root 這個賬號。
2.2 這個賬號由哪部主機關聯到本 Linux 主機,意思是這個賬號可能是由哪一部網絢主機關聯過來,, 這個設定值可以指定客戶端計算機(信任用戶的意思)。默認root可以來自任何一部主機。
2.3 這個賬號可以切換到什么身份來下達后續的指令,默認root用戶可以切換到任何身份。
2.4 可用該用戶下達什么指令,這些指令務必使用絕對路徑撰寫,預設root用戶可以切換任何身份執行任何指令。- 退出保存成功即可。
4. sudo搭配su使用方式
很多時候需要執行很多root工作,所以一直使用sudo很麻煩,有沒有辦法使用sudo搭配su,一口氣將身份切換到root用戶,且用自己的密碼切入root。答案是有的,即:[sudo su -]然后輸入當前用戶密碼即可切換到root用戶。