作者  fcamel (飛啊!起舞的小駱駝)  看板   P_fcamel
 標題  [FreeBSD]   把sudo的log記錄到專門的檔案
 時間  Wed Jul 28 23:11:01 2004


sudo會記錄在/var/log/messages裡, 但這個檔案記了大部份的log, 太雜,
在使用量高機器上一下就會被newsyslog給rotate掉

sudo的facility是local2, 這是由系上抄來的, sudo的man page裡沒說

man 3 syslog會列出所有facility對應到的常數,
local0 ~local7對應到 LOG_LOCAL0 ~ LOG_LOCAL7

我去trace source code的結果, 得到如下的結果:
defaults.c:     { "local0",     LOG_LOCAL0 },
defaults.c:     { "local1",     LOG_LOCAL1 },
defaults.c:     { "local2",     LOG_LOCAL2 },
defaults.c:     { "local3",     LOG_LOCAL3 },
defaults.c:     { "local4",     LOG_LOCAL4 },
defaults.c:     { "local5",     LOG_LOCAL5 },
defaults.c:     { "local6",     LOG_LOCAL6 },
defaults.c:     { "local7",     LOG_LOCAL7 },
config.h:#define LOGFAC "local2"

看來sudo確實是用local2

1.
在/etc/syslog.conf裡設定:
local2.info                                     /var/log/sudo.log

[NOTE]
a. 不是syslogd.conf
b. 中間要打TAB, 不能用SPACE
c. 要寫在最下面的!ooxx, *.*之類的設定之前

2.
touch /var/log/sudo.log;
chmod 640 /var/log/sudo.log;

已產生sudo.log後, 對syslogd的pid送出 -HUP, 讓它重讀設定檔即可

3.
改/etc/newsyslog.conf, 設定sudo.log的rotate時間
/var/log/sudo.log       root:wheel   640  7     *    $M1D0 Z