在CentOS系统中,vsftpd的日志文件位置由配置文件/etc/vsftpd/vsftpd.conf决定,常见路径及含义如下:
local_log_file参数,默认路径为/var/log/vsftpd/vsftpd.log(记录会话信息,如登录、退出等);xferlog_enable=YES和xferlog_file参数,默认路径为/var/log/vsftpd/xferlog(记录文件传输详情,如上传/下载的文件名、大小、时间等);syslog_enable=YES,日志会写入系统日志(如/var/log/messages或/var/log/syslog),需通过grep vsftpd过滤。可通过以下命令快速确认配置:
sudo grep -i "local_log_file\|xferlog_enable\|syslog_enable" /etc/vsftpd/vsftpd.conf
若参数未配置或值为NO,需修改配置文件并重启vsftpd服务使更改生效。
使用tail -f命令可实时跟踪日志文件的最新内容,适用于监控当前FTP活动:
# 查看主日志文件(会话信息)
sudo tail -f /var/log/vsftpd/vsftpd.log
# 查看传输日志文件(文件传输详情)
sudo tail -f /var/log/vsftpd/xferlog
# 若日志写入系统日志,可通过grep过滤
sudo tail -f /var/log/messages | grep vsftpd
按Ctrl+C可停止实时跟踪。
当日志文件较大时,使用less或more命令可分页浏览,支持上下翻页、搜索等功能:
# 使用less查看(推荐,支持搜索)
sudo less /var/log/vsftpd/vsftpd.log
# 使用more查看(简单分页)
sudo more /var/log/vsftpd/xferlog
在less中,按/关键词可搜索(如/login查找登录记录),按q退出。
使用grep命令可筛选出包含特定关键词的日志条目,便于快速定位问题:
# 查找所有登录尝试(成功/失败)
sudo grep "login" /var/log/vsftpd/vsftpd.log
# 查找传输错误(如"failed")
sudo grep "failed" /var/log/vsftpd/xferlog
# 统计今日登录次数(结合awk)
sudo awk '/$(date +%d\/%b\/%Y)/ && /login/' /var/log/vsftpd/vsftpd.log | wc -l
可根据需求替换关键词(如"upload"、“download”、"ERROR"等)。
若系统使用systemd管理vsftpd服务,可使用journalctl命令查看服务日志:
# 实时查看vsftpd服务日志
sudo journalctl -u vsftpd.service -f
# 查看最近100条日志
sudo journalctl -u vsftpd.service -n 100
# 过滤特定时间段的日志(如2025-10-23)
sudo journalctl -u vsftpd.service --since "2025-10-23" --until "2025-10-24"
该方式无需直接访问日志文件,适用于集中管理系统日志。
为防止日志文件过大占用磁盘空间,需配置日志轮转。编辑/etc/logrotate.d/vsftpd文件,添加以下内容:
/var/log/vsftpd/vsftpd.log {
daily # 每天轮转
missingok # 若日志文件不存在,忽略错误
rotate 7 # 保留最近7天的日志
compress # 轮转后压缩(节省空间)
notifempty # 若日志为空,不轮转
create 0640 root adm # 新日志文件的权限和所有者
}
/var/log/vsftpd/xferlog {
weekly # 每周轮转
rotate 4 # 保留最近4个轮转文件
compress # 压缩旧日志
missingok
notifempty
create 0640 root adm
}
配置完成后,运行以下命令强制执行轮转:
sudo logrotate -f /etc/logrotate.d/vsftpd
此后,系统会自动按配置轮转日志。