我的公司要求用户登录到生产服务器时,必须记录该用户登录的原因以及用户打算进行的更改.我的团队希望这样做,但很容易忘记.我想帮助他们记住.我考虑过一个问题,但想要一些更强的东西.
vim /logs/logindate.txt bash -l
有更好或更标准的技术吗?
注意:这个想法是这些用户是系统管理员,并希望在不破坏系统的情况下进行日志条目 – 他们经常忘记这样做.所以,如果他们可以控制它,那么……我们假设他们不会.
解决方法
查看
pam_exec.so.您可以在PAM的system-auth的会话界面中登录时运行脚本.在用户获取shell之前,脚本以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}"
如果这不能很好地起作用,请道歉.我没有测试它,但最近做了类似的事情. (它没有捕获输入.)
编辑:我对此的思考越多,我就越不认为它会因为它运行的阶段而起作用.将$PAM_USER替换为$(logname)后,相同的getreason脚本应该可以工作,但可能需要在/ etc / profile中执行. (首先测试交互式shell.)
我会留下两个选项,因为它至少应该让你思考正确的方向,如果没有别的.