Pure-FTPd ファイルアップロードにスクリプトを実行する(pure-uploadscript)
Pure-FTPdは、ファイルアップロード後に指定したスクリプトを実行する機能があるようです。Ubuntu Server 20.04にインストールした環境で試してみます。
pure-uploadscript
こちらが参考になりました。
Pure-FTPd の存在を知ってしまったので試さざるを得ない
pure-uploadscriptコマンドで、アップロード時に実行するスクリプトを指定するとのこと。
呼び出すスクリプトを作成。
$ sudo vi /home/web/pure-uploadscript.sh
記載内容は以下の通り。
#!/bin/sh
cat <<EOF >> /home/web/pure-uploadscript.log
\$1 = $1
UPLOAD_SIZE = $UPLOAD_SIZE
UPLOAD_PERMS = $UPLOAD_PERMS
UPLOAD_UID = $UPLOAD_UID
UPLOAD_GID = $UPLOAD_GID
UPLOAD_USER = $UPLOAD_USER
UPLOAD_GROUP = $UPLOAD_GROUP
UPLOAD_VUSER = $UPLOAD_VUSER
EOF
実行権限を付与しておきます。
$ sudo chmod 0755 /home/web/pure-uploadscript.sh
続いて、Pure-FTPDの設定を変更します。
/etc/pure-ftpd/pure-ftpd.confを直接変更する記載を見かけますが、手順が変わったようです。
/etc/pure-ftpd/conf/CallUploadScriptファイルを作成。
ファイルの内容に「yes」と記載することで有効になります。
$ sudo tee /etc/pure-ftpd/conf/CallUploadScript <<< "yes"
yes
サーバーを再起動。
$ sudo reboot
プロセスファイルを確認します。
pure-ftpd.upload.lock
pure-ftpd.upload.pipe
が作成されていれば、設定が有効になっています。
$ sudo ls -l /var/run/pure-*
-rw------- 1 root root 0 6月 13 07:39 /var/run/pure-ftpd.upload.lock
prw------- 1 root root 0 6月 13 07:39 /var/run/pure-ftpd.upload.pipe
-rw-r--r-- 1 root root 5 6月 13 07:40 /var/run/pure-uploadscript.pid
/var/run/pure-ftpd:
合計 8
-rw------- 1 root root 1464 6月 13 07:30 client-00001831
-rw-r--r-- 1 root root 5 6月 13 07:40 pure-ftpd.pid
準備できたら、pure-uploadscriptに作成したファイルを指定して起動します。
$ sudo pure-uploadscript -r /home/web/pure-uploadscript.sh
ftpクライアントでファイルをアップロードすると、ログファイルが出力されました。
内容は以下のとおりです。
$1 = /home/web/cc1.jpg
UPLOAD_SIZE = 129885
UPLOAD_PERMS = 644
UPLOAD_UID = 33
UPLOAD_GID = 33
UPLOAD_USER = www-data
UPLOAD_GROUP = www-data
UPLOAD_VUSER = ftp-web
はまりポイント
起動は、Pure-FTPD、pure-uploadscriptの順で行います。
/etc/pure-ftpd/conf/CallUploadScriptファイルが作成されていない、または内容が「yes」ではない場合、
pure-uploadscriptは以下のエラーで終了します。
Unable to open /var/run/pure-ftpd.upload.pipe: そのようなファイルやディレクトリはありません
起動の自動化
ここまでくれば、pure-uploadscriptを自動起動したいと思うのが当然かとおもいます。
こちらが参考になりました。
Pure-FTPd + Clamav
起動用のファイルを作成。
$ sudo vi /etc/systemd/system/pure-uploadscript.service
内容はこのようになりました。
[Unit]
Description=Notify Upload Service for Pure-FTPd
After=pure-ftpd.service
[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/usr/sbin/pure-uploadscript -B -u 33 -g 33 -r /home/web/pure-uploadscript.sh
[Install]
WantedBy=multi-user.target
今回、www-dataで実行したかったので、pure-uploadscriptのオプション-u、-gでそれぞれUID、GIDを指定しています。
サービスとして認識されたかチェックします。
$ sudo systemctl list-unit-files --type=service | grep pure
pure-ftpd.service generated enabled
pure-uploadscript.service disabled enabled
ちゃんと結果が表示されました。
サービスを有効にします。
$ sudo systemctl enable pure-uploadscript
サービスを開始します。
$ sudo systemctl start pure-uploadscript
ステータスを表示していみると、ちゃんと起動してくれてます。
$ sudo systemctl status pure-uploadscript
● pure-uploadscript.service - Notify Upload Service for Pure-FTPd
Loaded: loaded (/etc/systemd/system/pure-uploadscript.service; enabled; ve>
Active: active (exited) since Sun 2021-06-13 08:14:14 UTC; 7s ago
Process: 3252 ExecStart=/usr/sbin/pure-uploadscript -B -u 33 -g 33 -r /home>
Main PID: 3252 (code=exited, status=0/SUCCESS)
Tasks: 1 (limit: 4617)
Memory: 184.0K
CGroup: /system.slice/pure-uploadscript.service
└─3253 /usr/sbin/pure-uploadscript -B -u 33 -g 33 -r /home/web/pur>
6月 13 08:14:14 ftp systemd[1]: Started Notify Upload Service for Pure-FTPd.
【参考URL】
Pure-FTPd の存在を知ってしまったので試さざるを得ない
Pure-FTPd + Clamav
- 関連記事
-
- FC2 ブログ ケータイ用表示を削除する(PCへリダイレクト対応)
- Ubuntu 20.04 Let’s Encryptを使用してNginxでhttps接続(Certbot使用)
- Pure-FTPd ファイルアップロードにスクリプトを実行する(pure-uploadscript)
- Pure-FTPd ufwによるFireWall設定とパッシブモードで使用するポート範囲の指定
- Pure-FTPdをUbuntu Server 20.04にインストールし、www-dataユーザー権限でファイルを書き込む
コメント