查看了有关登录时电子邮件提醒的其他问题,但有两个问题:
通过 SFTP 连接的用户是否也会触发警报?(我之前尝试过,只有在使用 SSH 而不是使用 SFTP 进行远程传输时才会触发电子邮件)
其他答案说,当通过 SSH 使用 -n 开关时,电子邮件警报将不起作用,有没有办法解决这个问题?
谢谢。
答案1
基本上,我会使用 .bashrc 中的某些内容来触发邮件发送命令。使用包含和权限技巧,您可以让用户无法编辑(将 .bashrc 提供给 root,使其包含 .bashrc_priv,然后将其提供给用户以供其自行配置)。
.bashrc,属于root
# trigger mail here
[ -f "~/.bashrc_priv" ] && . ~/.bashrc_priv
.bashrc_priv,属于$USER
# Whatever you want in your users' bashrc ; they can edit this file.
我记得,SFTP 触发 bash 登录过程。
如果您使用某些特定的东西来触发警报(某些包/应用程序),请告诉我。
答案2
您可以使用 rsyslog 进行设置,您可能正在运行它。它包含一个用于发送电子邮件的输出模块,您可以设置一条规则,当记录的消息匹配时,向某个地址发送电子邮件。以下是一个例子:
$ModLoad ommail
$ActionMailSMTPServer mail.example.net
$ActionMailFrom [email protected]
$ActionMailTo [email protected]
$template mailSubject,"User logged into %hostname%"
$template mailBody,"RSYSLOG Alert\r\nmsg='%msg%'"
$ActionMailSubject mailSubject
$ActionExecOnlyOnceEveryInterval 60
if $msg contains 'session opened for user' then :ommail:;mailBody
您可以将其放入/etc/rsyslog.d/notify.conf
,根据需要进行自定义,然后运行service rsyslog restart
。您应该收到如下电子邮件:
Date: Mon, 15 Jul 2013 2:30:01 UT
From: <[email protected]>
To: <[email protected]>
Subject: User logged into localhost
X-Mailer: rsyslog-immail
RSYSLOG Alert
msg=' pam_unix(cron:session): session opened for user root by (uid=0)'
您可以在以下位置阅读有关此功能的更多信息:http://www.rsyslog.com/doc/ommail.html