stackexchange 的人们大家好,
我在尝试查找特定日志文件的位置时遇到了一些困难,我希望这里有人可以帮助我。
我想做的是列出 sftp 服务器上特定用户的登录日期/时间。通过在线研究,我到目前为止已经找到了
cat /var/log/auth.log | grep "username"
其中列出了一些登录信息,但没有我要查找的那么远。
我也尝试过
last -n 1000 | grep "username"
但不幸的是,这似乎只适用于 ssh 访问服务器而不是 sftp (据我所知)
任何人都可以想到列出 sftp 用户的特定用户的登录的任何其他方法吗?
提前非常感谢,黑暗。注意,如果有任何帮助,用户将被chroot到他们自己的主目录。
编辑:
我一开始没有注意到一些存档文件,这些文件给了我最多一个月的登录时间,这更好。新问题:默认情况下,CentOs 保留存档的身份验证日志多长时间?如果超过一个月,较旧的档案将移至何处?我已经检查了 logrotate.conf 并且没有提及,/var/log/auth.log
所以我假设它使用默认值。
编辑:编辑 我想我可能已经找到了我正在寻找的答案,但无论如何发布此内容以防万一对其他人有用。
logrotate 脚本是/etc/logrotate.d/rsyslog
.默认情况下,这些日志每周轮换一次并存储最多 4 周的日志。
我还没有声誉将此作为答案,但如果管理员看到此内容,请随时关闭它。
最美好的祝愿~黑暗
答案1
在 CentOS 6 上,/var/log/secure
包含 sshd 的输出,该输出启动 sftp 子服务器。默认情况下,您将看到类似于以下内容的消息,但仅此而已:
Feb 25 12:34:56 server sshd[1234]: Accepted password for user from 1.2.3.4 port 12345 ssh2
Feb 25 12:34:56 server sshd[1234]: pam_unix(sshd:session): session opened for user user by (uid=0)
Feb 25 12:34:57 server sshd[1234]: subsystem request for sftp
如果您想更清楚地了解 sftp 操作(例如已传输的文件),请修改以下行/etc/ssh/sshd_config
:
Subsystem sftp /usr/libexec/openssh/sftp-server
成为
Subsystem sftp /usr/libexec/openssh/sftp-server -f AUTHPRIV -l INFO
然后重新启动 sshd:
# service sshd restart
然后您将拥有默认日志以及如下所示的日志:
Feb 25 12:34:56 server sftp-server[1234]: session opened for local user user from 1.2.3.4
Feb 25 12:34:56 server sftp-server[1234]: opendir "/home/user/"
Feb 25 12:34:56 server sftp-server[1234]: closedir "/home/user/"
Feb 25 12:34:56 server sftp-server[1234]: open "/home/user/test" flags READ mode 0666
Feb 25 12:34:56 server sftp-server[1234]: close "/home/user/test" bytes read 1234 written 0
Feb 25 12:34:56 server sftp-server[1234]: session closed for local user user from 1.2.3.4