centos 检测用户登录后邮件通知用户
时间: 2023-08-02 18:15:10 浏览: 46
可以通过配置 PAM(Pluggable Authentication Modules) 实现用户登录后邮件通知。
以下是具体步骤:
1. 安装邮件客户端发送邮件,比如 postfix:
```bash
sudo yum install postfix
```
2. 配置 postfix:
```bash
sudo vi /etc/postfix/main.cf
```
找到 `myhostname` 行,设置为当前主机名:
```
myhostname = yourhostname.com
```
找到 `mydestination` 行,将其设置为本地主机名,以及需要接收邮件的域名,如下所示:
```
mydestination = $myhostname, localhost.$mydomain, $mydomain
```
保存并退出。
3. 安装邮件客户端,比如 mailx:
```bash
sudo yum install mailx
```
4. 编辑 PAM 配置文件:
```bash
sudo vi /etc/pam.d/login
```
在文件末尾添加以下行:
```
session optional pam_exec.so /usr/local/bin/email-login.sh
```
保存并退出。
5. 创建 `email-login.sh` 脚本:
```bash
sudo vi /usr/local/bin/email-login.sh
```
添加以下内容:
```bash
#!/bin/bash
if [ "$PAM_TYPE" != "close_session" ]; then
# 获取登录用户的名称
user="$(whoami)"
# 获取登录用户的 IP 地址
ip="$(echo $PAM_RHOST)"
# 获取登录用户的主机名
hostname="$(hostname)"
# 发送邮件
echo "User $user has logged in to $hostname from $ip." | mail -s "Login Notification" user@example.com
fi
```
这个脚本会在用户登录时被调用,发送邮件通知登录用户。
6. 授予 `email-login.sh` 脚本执行权限:
```bash
sudo chmod +x /usr/local/bin/email-login.sh
```
7. 重启 PAM:
```bash
sudo systemctl restart systemd-logind.service
```
现在,当用户登录到系统时,会向 `user@example.com` 发送一封邮件。你需要将 `user@example.com` 更改为你要通知的实际邮箱地址。