要以package的方式安裝軟體時,需要先下載該軟體的package檔案,通常package檔案的名稱是以.tar.gz為結尾。因為cvsup-without-gui這個軟體在ports下找得到,所以在網路設定好之後,可以用pkg_add -r來安裝。
root@myhost [~] > pkg_add -r sudo
Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/sudo.tbz... Done. If you store accounts in external place and want to use password authentication for sudo, you must create /etc/pam.d/sudo file like: ===================================================================== # # PAM configuration for the "sudoers" service # # auth auth include system # account account include system # session session include system # password password include system =====================================================================
不用懷疑,sudo已經安裝完成,接下來做一些後續設定。下達以下指令:
root@myhost [~] > visudo
visudo: Command not found.
如果有以上情形發生,是一個正常的現象。這是為了加速搜尋可執行的程式的速度,而使用記憶體來記憶可執行的程式在硬碟中存放的位置,建立一個索引。每次執行程式的時候就不用搜尋硬碟。每次剛安裝完軟體,硬碟中的可執行的程式就增加了一些,但是在記憶體中的索引卻不一定會同步更新。就會產生Command not found這種「指令找不到」的情形。
解決的方式有二種:一是下達rehash指令,更新在記憶體中的索引;二是重新登入系統。
root@myhost [~] > rehash
而正常執行visudo的效果相當於使用vi這個文字編輯軟體來編輯/usr/local/etc/sudoers,請找到這兩行:
# Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL
改成:
# Uncomment to allow people in group wheel to run all commands
%wheel ALL=(ALL) ALL
在預設的情形下,wheel群組裡的使用者可以用su指令變成root身份,但是要輸入root密碼才能通過身份驗證,如果主機需要多人協同管理,只使用su時,每個管理者都會知道root密碼,萬一任何一個管理者存心不良,那麼系統可能毀於一旦。而sudo可以提供更多彈性的權限管理:使用者下達sudo指令時,則是輸入自己的密碼通過身份驗證。而且sudo可以限定特定的使用者執行特定的程式或下達特定指令時才擁有root權限。以上的設定讓wheel群組裡的使用者可以用sudo指令變成root身份,所以在設定sudo後,可以改變su的權限認證模式,使得wheel群組裡的使用者不能用su指令變成root身份。