小白问了 GPT-4 ,姑且看看也好,回答如下。
在这种情况下,您可以在 Linux 服务器上设置一些脚本和配置,以监控 Windows 电脑的连接情况并实施断开超过 30 分钟后拒绝连接的策略。以下是一个简单的解决方案:
1. 首先,确保您已在 Linux 服务器上安装了 Samba 。如果没有,可以使用以下命令安装(以 Ubuntu 为例):
```
sudo apt update
sudo apt install samba
```
2. 编辑 Samba 配置文件 `/etc/samba/smb.conf`,为您的共享文件夹添加以下选项:
```
[shared_folder]
path = /path/to/your/shared/folder
read only = no
guest ok = yes
preexec = /path/to/your/
connect_script.sh %I
postexec = /path/to/your/
disconnect_script.sh %I
```
这将为连接和断开连接分别指定要运行的脚本。
3. 创建一个名为 `
connect_script.sh` 的脚本,用于记录连接的时间戳:
```bash
#!/bin/bash
touch "/path/to/your/connect_timestamps/$1"
```
4. 创建一个名为 `
disconnect_script.sh` 的脚本,用于计算连接持续时间并实施 30 分钟限制:
```bash
#!/bin/bash
CONNECT_TIMESTAMPS_DIR="/path/to/your/connect_timestamps"
CURRENT_TIMESTAMP=$(date +%s)
CONNECT_TIMESTAMP=$(stat -c %Y "$CONNECT_TIMESTAMPS_DIR/$1")
ELAPSED_TIME=$((CURRENT_TIMESTAMP - CONNECT_TIMESTAMP))
# 30 分钟转换为秒
THIRTY_MINUTES_IN_SECONDS=$((30 * 60))
if [ $ELAPSED_TIME -gt $THIRTY_MINUTES_IN_SECONDS ]; then
# 拒绝未来的连接
iptables -A INPUT -s "$1" -j DROP
fi
```
5. 为这两个脚本设置可执行权限:
```
chmod +x /path/to/your/
connect_script.sh /path/to/your/
disconnect_script.sh```
6. 重启 Samba 服务,以使更改生效:
```
sudo systemctl restart smbd
```
这个方案会在客户端连接和断开时分别调用 `
connect_script.sh` 和 `
disconnect_script.sh`。`
disconnect_script.sh` 将计算连接持续时间,并在超过 30 分钟后拒绝来自客户端 IP 的未来连接。请注意,这个方案并不完美,如果客户端 IP 发生变化,拒绝策略可能会失效。