lastlog
当用户登录时,我会将命令解析为自定义文件,以便与另一个监视 SSH 登录的应用程序一起使用。
我/etc/pam.d/sshd
已经包含了该行和最底部:
session optional pam_exec.so seteuid /usr/local/bin/run_on_login.sh
这项工作有一个主要缺点。该脚本在之前运行/var/log/lastlog
或/var/log/wtmp
更新。我认为是因为在运行脚本之后才认为成功登录已完成。
我试着把线放进去/etc/pam.d/login
,似乎没有什么区别。
有没有办法在完整登录过程完成后运行 pam_exec 脚本(包括写入日志)?
答案1
我能够通过初始/usr/local/bin/run_on_login.sh
分叉另一个作为后台进程运行的脚本,等待几秒钟,然后解析“最后”命令来解决这个问题。
例如,pam_exec 运行此脚本:
#!/bin/bash
# /usr/local/bin/run_on_login.sh
nohup /usr/local/bin/parse_last.sh >/dev/null 2>&1 &
哪个触发这个脚本:
#!/bin/bash
# /usr/local/bin/parse_last.sh
sleep 5
# (truncated for brevity)
last -iF | head -n 50 | awk '{print "something"}'