看一下pam_exec.so。您可以在PAM的system-auth的会话界面中登录时运行脚本。该脚本在用户获得外壳程序之前以root用户身份运行,因此它可能无法使用read
?捕获输入。但是,您可以尝试使用read
并从用户那里获取原因,并使用一条logger
语句将其记录到syslog中。(下面我省略了,但是您可以捕获CTRL + C来防止任何人无故退出。)$ PAM_USER将设置为登录的人,因此您可以在logger语句中包括它。
例:
在/etc/pam.d/system-auth中的会话顶部:
session required pam_exec.so /usr/local/sbin/getreason
和/ usr / local / sbin / getreason:
#!/bin/bash
read -p "Reason for logging into production: " reason
logger -t $(basename $0) "$PAM_USER logged in with reason: ${reason}"
抱歉,如果无法正常使用。我没有测试,但是最近做了类似的事情。(它没有捕获输入。)
编辑:我考虑得越多,由于它运行的阶段,我认为它不会起作用的越多。同样的getreason
脚本应该工作,你替换后$PAM_USER
用$(logname)
,但它可能需要被执行/etc/profile
。(首先测试交互式shell。)
我将保留这两个选项,因为如果没有其他选择,它至少应该使您思考正确的方向。