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

関連記事

コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
https://symfo.web.fc2.com/

PR

検索フォーム

月別アーカイブ