see also.
普通のユーザはinternal-sftp -f authpriv のようにしてsyslogのfacilityを指定するだけで良い。けどchroot しているuserの場合にはログが出ない。理由はchroot ディレクトリの下にsyslogd のsocketがないから(/dev/log)。
追記
chroot 環境の/etc/localtime がないとログの時刻がずれるのでコピーしておく。
# cp /etc/localtime /path/to/chroot/etc/localtime
解決策1 - chrootディレクトリが"/" と同じパーティションにある場合
/dev/log のhardlink を作る。
# mkdir /path/to/chroot/dev # ln /dev/log /path/to/chroot/dev/log
解決策2 - chrootディレクトリが"/" と同じパーティションにない場合
同一パーティションにないとhardlink は作れないので、syslogd のオプションでsocketを追加する。"-a /path/to/chroot/dev/log"
- man syslogd
-a socket
Using this argument you can specify additional sockets from that syslogd has to listen to. This is needed if you're going to let some daemon run within a chroot() environment.
/etc/sysconfig/syslog や /etc/init.d/syslogd あたりのSYSLOGD_OPTIONSに追加。
SYSLOGD_OPTIONS="-m 0 -a /path/to/chroot/dev/log"
追記 rsyslogの場合
新しいrsyslogだと-a オプションが廃止されている。
imuxsock.so module を使う。
$AddUnixListenSocket /path/to/chroot/dev/log
解決策3
syslogd の設定触るのめんどくせー、とかの場合は/dev をがっつりbind オプションでmountさせてしまう。
- /etc/fstab
/dev /path/to/chroot/dev ext3 bind 0 0
そしてmount -aとか。