Sftp 记录日志及转储功能说明
1、 Sftp记录日志: Root用户登录:
修改:/etc/ssh/sshd_config
# override default of no subsystems
Subsystem ? ?sftp??? /usr/lib64/ssh/sftp-server?-l INFO -f local5 <红色字体为添加>
修改:/etc/rsyslog.conf
添加 :注意auth与上边要求一致。
auth, local5.*????????????????????????????/var/log/sftp.log
重启服务:
service rsyslog restart? service sshd restart? 2、 日志转储配置:
新建文件:/etc/logrotate.d/sftp :注意不要带备注
##Deal Sftp Log /var/log/sftp.log {
nocreate missingok
notifempty rotate 9
size 10k create 640 root root sharedscripts postrotate
/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2>/dev/null) &>/dev/null
endscript }
注意:确保日志文件sftp.log的inode不能变化,发生变化的话则不会在写sftp.log,若sftp.log删除后则会写在系统日志messages里面。 其中 /var/log/sftp.log ##日志文件
nocreate ##转储时不创建文件---重要,确保文件的inode不能变化
rotate 9 ##转储9个文件循环 missingok ##文件缺失判断 notifempty ##文件空判断
size 10k ##文件大小10K转储 create 640 root root ##文件权限 sharedscripts ###启停日志进程。
3、 日志转储程序:目前在/home/sftplog/getftplog.sh
#!/bin/sh
date '+%Y%m%d%H%M%S'
echo \
/usr/sbin/logrotate -f /etc/logrotate.d/sftp ##执行日志文件转储 echo \curtime=`date '+%Y%m%d%H%M%S'`
ls /var/log/sftp.log.?|while read line do
filename=$(basename $line) if [ -f \ then
mv ${line} /home/sftplog/ulogs/${filename}.${curtime} ##文件
chmod 755 /home/sftplog/ulogs/${filename}.${curtime} ##修改权限
fi done
echo \ 4、 定时执行
*/10 * * * * sh /home/sftplog/getftplog.sh >/home/sftplog/getftplog.log 2>&1
##10分钟执行一次。