from:http://blog.chinaunix.net/u/30648/showart_261928.html
Sudo是允許系統管理員讓普通使用者執行一些或者全部的root命令的一個工具,如halt,reboot,su等等。這樣不僅減少了root使用者的登陸和行政時間,同樣也提高了安全性。Sudo不是對shell的一個代替,它是面向每個命令的。
一:特點
A Sudo能夠限制使用者只在某台主機上運行某些命令。
B Sudo提供了豐富的日誌,詳細地記錄了每個使用者幹了什麼。它能夠將日誌傳到中心主機或者Log Service器。
C Sudo使用時間戳檔案來執行類似的“檢票”系統。當使用者調用sudo並且輸入它的密碼時,使用者獲得了一張存活期為5分鐘的票(這個值可以在編譯的時候改變)。
D Sudo的設定檔是sudoers檔案,它允許系統管理員集中的系統管理使用者的使用許可權和使用的主機。它所存放的位置預設是在/etc/sudoers,屬性必須為411。
二:軟體包
sudo-1.6.6-1Thiz.i586.rpm 在thizlinux 7.0的第一張光碟片內
如果您的系統沒有進行安裝請使用rpm –ivh 進行安裝
三:如何編輯
執行visudo命令:
如下面是一個極為簡單的例子 :
加入如下幾行:
Defaults syslog=auth
Defaults logfile=/var/log/sudo.log
Cmnd_Alias SHUTDOWN=/sbin/halt,/sbin/shutdown
root ALL=ALL
esnow ALL=ALL
xujh ALL=ALL,!SHUTDOWN
在這個例子當中 , esnow可以執行 root 所有的命令 , xujh 除了 halt
及 shutdown 不能執行以外 , 其它 root 能執行的命令他都能執行 .
這個檔案有一個專屬的 編輯器叫 visudo 可來編輯 /etc/sudoer 這個檔案
在編輯完這個檔案之後 , esnow 就可以用 sudo 這個命令轉換成
superuser 來做原來只有 superuser 才能做的事 . 而關於使用 sudo
有一個記錄檔 , 在 /var/log/sudo.log , 裡面記錄著誰在什麼時候利用
sudo 下了那些指令 . 順便一提的是 : 利用下面這個命令可抓出那些人轉換
成 superuser 但卻沒有成功 ......
/etc/sudoers中還可以定義使用者別名、主機別名例如:
Host_Alias SERVER=no1
User_Alias ADMINS=abc,bcd
ADMINS ALL=(ALL) NOPASSWD: ALL
這樣ADMINS不用口令就可以執行一切操作了。
SUDO的參數還有很多例如:
sudo –l 用來使使用者查看自己目前可以在sudo中執行哪些命令。
sudo –V 顯示sudo的版本號碼
sudo –h 顯示執行sudo時所能輸入的參數
sudo –b 將要執行的指令放在後台執行
sudo –p prompt 可以更改詢問密碼的提示,其中%u會代換為使用者帳號名稱,%h會顯示主機名稱
sudo -V | -h | -l | -L | -v | -k | -K | -s | [ -H ] [-S ] [ -b ] | [ -p prompt ] [ -c class|- ] [ -u
username/#uid ] command
四:如何使用
以esnow使用者登入執行
sudo /sbin/shutdown -k 40 "aa"
提示密碼:輸入esnow使用者的密碼就執行了命令
以xujh使用者登入執行
[xujh@www xujh]$ sudo /sbin/shutdown -k 40 "aa"
Password:
xujh is not in the sudoers file. This incident will be reported.
輸入密碼後,提示沒有授權。
五:日誌查看
vi /var/log/sudo.log
Feb 18 20:17:39 : esnow : TTY=pts/0 ; PWD=/home/esnow ; USER=root ;
COMMAND=/sbin/shutdown -k 40 aa
Feb 18 20:20:00 : xujh : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/xujh ;
USER=root ; COMMAND=/sbin/shutdown -k 40 aa