對營運人員來說,Linux 系統中有一個很重要的命令 —— sudo。可能你早就已經猜到了,它的字面意思是“超級使用者才能做。”(super user do。),可以說 sudo 在 Linux 中是一個統管一切的命令。相信很多 Linux 使用者都曾有過這樣的經曆:在終端中試著運行某個命令,結果卻遇到“拒絕訪問”T_T …… 那麼,很多時候,sudo 就是你所需要的命令。
Linux 系統不是已經有 root 使用者嗎。直接登入或切換(su “switch user”)成 root 不行嗎。為什麼還需要 sudo 命令。沒錯,我們直接登入 root 使用者當然沒問題,但正所謂“權力越大,責任也越大。”,相對而言,使用 sudo 更加合理、安全。
那這個 sudo 實際能做些什麼呢。如果你在任何Linux命令的前面加上“sudo”這個首碼,那麼它會以較高的權限來運行該命令。一般來說,普通使用者要執行系統的服務或管理工作,以及修改設定檔等操作都需要較高的權限,比如配置、重啟 LAMP(Linux Apache MySQL PHP)伺服器。
其實在 Windows 中也有類似的功能,下面這個對話方塊是不是很熟悉。當你試圖處理任何重要操作時,Windows 就會彈出使用者帳戶控制(ACL)對話方塊,在對話方塊中會問你是否想繼續執行(你真的要運行剛才點擊的這個程式嗎。),點擊“是”隨後執行該任務。
像 Windows 的這種詢問式操作是比較友好的,而 Linux 在這方面就顯得更有戲劇性。要是沒有適當的許可權,一些操作會顯得相當怪異。比如:正在編輯的那個重要的設定檔就會無法儲存,剛剛安裝的那個程式被拒絕運行,原始碼編譯不了等等。這時候,你要做的就是請求許可權。
舉個栗子:
[rudy@ ~]$ rebootreboot: must be superuser[rudy@ ~]$ sudo reboot[sudo] password for rudy:Broadcast message from root (pts/0) (Fri Aug 4 18:55:46 2017)The system is going down for reboot NOW!
我們使用 reboot 命令重啟系統,第一次提示“必須是超級使用者”,所以我們需要使用 sudo 請求超級使用者權限。sudo要求你提供使用者密碼。請注意:它要求 你提供的是你的密碼,而不是根密碼。最後,我們看到表明現在將重啟系統的廣播資訊。sudo 就像是個神奇的命令,會發出神奇的指令。
Suderos 檔案可謂是 sudo 的基礎。它控制著誰可以使用 sudo 命令來獲得較高的權限。它通常位於/etc/sudoers。想編輯這個檔案,最有效最 安全的方式就是,使用visudo命令。這個命令會以提升許可權啟動vi編輯器,那樣你就能編輯並儲存該檔案。它還會給sudoers檔案上檔案鎖,那樣別 人無法編輯該檔案。一旦你完成了編輯工作,它會分析檔案,尋找有無簡單的錯誤。編輯sudo檔案要比僅僅使用任何舊的文字編輯器來得安全得多。
該檔案含有許多參數。你可以指定哪些使用者或哪些使用者助可以執行哪些命令。我們準備為自己授予訪問sudo的許可權,為此只要在底部添加:
username ALL=(ALL) ALL //為使用者"username"授予sudo訪問權%wheel ALL=(ALL) ALL //為屬於wheel使用者組的所有使用者授予sudo訪問權
現在指定的使用者名稱就能夠使用所有根許可權了。你還可以允許某個使用者或使用者組只對特定服務或伺服器擁有sudo訪問權,以取代ALL參數,不過那是另一個話題了。
幾個選項
與任何優秀的命令一樣,也有幾個很棒的選項可以讓sudo處理更多的事務。
sudo -b會在後台運行命令。這對顯示許多即時輸出內容的命令來說很有用。
sudo -s 會運行以提升許可權指定的外殼,為你提供#提示符(別忘了退出。)
sudo su -會讓你成為根使用者,並裝入你那些自訂的使用者環境變數。
有沒有現在就用它。
我們想要運行重要任務時,sudo提供了安全的提升許可權。在Ubuntu使用者當中,它也許是使用最廣泛、功能最強大的命令,因為它已成為該發行版中的首選方法。既然你擁有了這麼大的權利,那麼在運行命令時務必要做到安全。世上可沒有su-undo撤銷命令。
http://www.linuxidc.com/Linux/2013-07/87855.htm
http://www.linuxidc.com/Linux/2012-11/75153.htm
http://www.linuxidc.com/Linux/2013-12/94358.htm
http://www.cnblogs.com/qlwy/archive/2011/06/26/2121919.html