PureFTP 認証方法をカスタマイズするには

ショコラ
ショコラ

PureFTP 認証方法をカスタマイズするには

stilliard/pure-ftpd:latest のイメージで立ち上げたコンテナ。

もっさん先輩
もっさん先輩

認証ファイル

#!/bin/bash

env > /tmp/env.txt

host_name=$(host $AUTHD_REMOTE_IP | awk '{print $5}')
echo $host_name >> /tmp/env.txt

#allow_list=("cnode.jp" "ap.nuro.jp")
mapfile -t allow_list < /auth-pure-ftp/allow_list.txt

auth=false
for allow in "${allow_list[@]}"; do
  if [[ "$host_name" == *"$allow"* ]]; then
   auth=true
  fi
done

if [[ $auth == false ]]; then
  echo "auth_ok:0"
  exit 1
fi

if [ $FTP_USER_NAME != $AUTHD_ACCOUNT ]; then
  echo "auth_ok:0"
  exit 1
fi

if [ $FTP_USER_PASS != $AUTHD_PASSWORD ]; then
  echo "auth_ok:-1"
  exit 1
fi

echo "auth_ok:1"
echo "uid:1000"
echo "gid:1000"
echo "dir:$FTP_USER_HOME"
echo "end"

Dockerfile

FROM stilliard/pure-ftpd:latest

RUN apt update -y
RUN apt install vim procps host -y
COPY auth-pure-ftp /auth-pure-ftp
RUN chmod a+x /auth-pure-ftp/authhandler.sh

CMD pure-authd -s /var/run/pureftpdauth.sock -r /auth-pure-ftp/authhandler.sh & \
 /run.sh -l extauth:/var/run/pureftpdauth.sock -E -j -R -P $PUBLICHOST -A

コンテナの起動には -A を追加しないと chroot しませんでした。

pure-authd -s /var/run/pureftpdauth.sock -r /auth-pure-ftp/authhandler.sh & \
 /run.sh -l extauth:/var/run/pureftpdauth.sock -E -j -R -P $PUBLICHOST -A

イメージもつくっておきます。

docker build -t auth-pure-ftpd .

動作確認

docker run\
 -d\
 -p 20-21:20-21\
 -p 30000-30099:30000-30099\
 -e FTP_USER_NAME=webadmin\
 -e FTP_USER_PASS=1235\
 -e PUBLICHOST={サーバーのホストorIP}\
 -e FTP_PASSIVE_PORTS=30000:30009\
 -e FTP_USER_HOME=/tmp/\
 auth-pure-ftpd

以上

Scroll to Top