在CentOS系統中,如果你想要在使用SFTP時自動執行一個自定義腳本,可以通過修改sshd配置文件來實現。以下是一個基本的步驟指南:
創建自定義腳本: 首先,你需要創建一個你想要在SFTP連接時執行的腳本。這個腳本應該放在服務器上的某個位置,并且確保它有執行權限。
#!/bin/bash
echo "SFTP session started at $(date)"
# 在這里添加你想要執行的命令
將這個腳本保存為 /usr/local/bin/sftp-custom-script.sh,然后給予執行權限:
chmod +x /usr/local/bin/sftp-custom-script.sh
修改sshd配置文件:
接下來,你需要編輯sshd配置文件來指定SFTP子系統,并設置Chroot環境(如果需要)。這個文件通常位于 /etc/ssh/sshd_config。
sudo vi /etc/ssh/sshd_config
在文件中找到或添加以下行:
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
這里,Match Group sftpusers 表示接下來的配置將只適用于屬于sftpusers組的用戶。ChrootDirectory %h 將用戶的根目錄限制在其主目錄中。ForceCommand internal-sftp 強制使用內置的SFTP服務器,而不是默認的shell。
創建用戶組并添加用戶: 創建一個新的用戶組(如果還沒有的話),并將需要使用SFTP的用戶添加到這個組中。
sudo groupadd sftpusers
sudo usermod -aG sftpusers username
替換 username 為你想要添加的用戶名。
設置腳本執行:
為了讓SFTP用戶在登錄時執行你的自定義腳本,你可以使用 ForceCommand 指令來調用它。修改 /etc/ssh/sshd_config 文件,為特定的用戶或用戶組設置 ForceCommand。
Match User username
ForceCommand /usr/local/bin/sftp-custom-script.sh
或者,如果你想要對整個組應用這個設置:
Match Group sftpusers
ForceCommand /usr/local/bin/sftp-custom-script.sh
重啟SSH服務: 保存并關閉sshd配置文件后,重啟SSH服務以使更改生效。
sudo systemctl restart sshd
測試SFTP連接:
現在,當你使用屬于sftpusers組的用戶通過SFTP連接到服務器時,你的自定義腳本應該會被執行。
請注意,這些步驟可能需要根據你的具體需求進行調整。始終確保你的配置符合你的安全策略,并且在應用更改之前備份任何重要的配置文件。