sudo文法:
sudo [-b] [-u新使用者帳號]
選項與參數:-b:將後續的指令放到背景中讓系統自行執行,而不與目前的shell產生影響-u:接切換的使用者,若無此項則代表切換身份為root例如:sudo -u wang touch /tmp/sudo.txt (注意:目前只能在tmp目錄下面建立,需要設定sudo命令)
sudo執行原理:
- 當使用者執行sudo時,系統於/etc/sudoers檔案中搜尋該使用者是否有執行sudo的許可權;
- 若使用者具有執行sudo的許可權後,便讓使用者【輸入使用者自己的密碼】來確認;
- 若密碼輸入成功,便開始進行sudo後續接的指令(但root執行sudo時,不要求輸入密碼)
- 若想切換身份與執行者身份相同,那也不需要輸入密碼。
單一使用者與sudoers檔案文法:【注意】用visudo命令編輯/etc/sudoers檔案,不要用vim編輯。因為visudo命令能夠檢查/etc/sudoers檔案文法例如:[root@localhost ~]# visudo這一行的四個欄位的意義:
- 系統的哪個帳號可以使用sudo這個指令,預設是root這個帳號
- 當這個帳號有哪部主機聯機到本linux主機,這個值可以指定用戶端電腦,預設值root可來自任何一部網路主機
- 這個帳號可以切換成什麼身份來下達後續的指令,預設root可以切換成任何人
- 可用該身份下達什麼指令,這個指令請務必使用絕對路徑編寫。預設root可以切換任何身份且進行任何指令之意。
例如 把使用者myuser1添加到sudo利用群組處理sudo[root@localhost ~]# visudo在最左邊加上%,代表後面接的是一個【群組】例如:把使用者wang添加到wheel組中[root@localhost ~]# usermod -a -G wheel wang[root@localhost ~]# su - wang[wang@localhost ~]sudo tail -3 /etc/shadow不需要輸入密碼(把#去掉)有限制的指令操作例如:myuser1修改root密碼使用別名修改指令visudo的別名可以是指令別名[Cmnd_Alias]、賬戶別名[User_Alias]、主機別名[Host_Alias]