0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ubuntu + vsftpd による FTP 環境構築手順

Posted at

1. vsftpd のインストール

sudo apt update
sudo apt install -y vsftpd
  • vsftpd(Very Secure FTP Daemon)をインストール
  • バージョン例:3.0.5

設定ファイルのバックアップ

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
  • オリジナル設定を /etc/vsftpd.conf.orig として残す

/etc/vsftpd.conf の基本設定

# 匿名ログインの無効化
anonymous_enable=NO

# ローカルユーザーのログイン許可
local_enable=YES

# ファイル書き込み許可
write_enable=YES

# ユーザーをホームディレクトリ以下に拘束
chroot_local_user=YES
allow_writeable_chroot=YES      # Ubuntu 22.04 以降で必要

# 新規ファイルのパーミッション
local_umask=022

# 転送ログの出力
xferlog_enable=YES
log_ftp_protocol=YES

# パッシブモードの設定
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40010
# 外部公開IPを固定したい場合
# pasv_address=YOUR.SERVER.IP

allow_writeable_chroot=YES は、ホーム直下が書き込み可能な chroot 環境に必要

必要に応じて pasv_address を設定

FTP 用ローカルユーザーの作成

# (任意) FTP専用グループ作成
sudo groupadd ftpusers

# シェルを /usr/sbin/nologin にしてユーザー作成
sudo useradd -m -s /usr/sbin/nologin -G ftpusers ftpuser

# パスワード設定
sudo passwd ftpuser
  • /usr/sbin/nologin でシェルログイン不可に(後述の設定変更が必要)
  • グループ ftpusers を作成し、管理しやすく

/etc/shells の調整

vsftpd は PAM 認証時に /etc/shells にあるシェルのみ許可します。
シェルを /usr/sbin/nologin のまま使う場合、以下を追記してください。

# /etc/shells に追記(なければ)
grep -Fxq "/usr/sbin/nologin" /etc/shells \
  || echo "/usr/sbin/nologin" | sudo tee -a /etc/shells
  • ファイル末尾に /usr/sbin/nologin が追加される
  • あるいは、ftpuser のシェルを /bin/bash//bin/false に変更しても可

FTP ディレクトリ&パーミッション設定

# FTPルートディレクトリを作成
sudo mkdir -p /home/ftpuser/ftp/upload

# 所有権を ftpuser:ftpusers に変更
sudo chown -R ftpuser:ftpusers /home/ftpuser/ftp

# ディレクトリ権限設定
sudo chmod 755 /home/ftpuser/ftp
sudo chmod 755 /home/ftpuser/ftp/upload
  • upload 以下だけ書き込み可能に(必要なら 755→775 など調整)

ファイアウォール設定

UFW を利用する場合

sudo apt install -y ufw
sudo ufw enable
sudo ufw allow 21/tcp
sudo ufw allow 40000:40010/tcp
sudo ufw reload

iptables-persistent を利用する場合

sudo apt install -y iptables-persistent
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --match multiport --dports 40000:40010 -j ACCEPT
sudo netfilter-persistent save

vsftpd サービスの再起動

sudo systemctl restart vsftpd
sudo systemctl status vsftpd
  • 設定変更後は必ず再起動して反映を確認

CLI での接続テスト

FTP クライアントのインストール

sudo apt install -y inetutils-ftp
  • 接続とログイン
ftp localhost
# Name: ftpuser
# Password: (設定したパスワード)

WSL2 環境での GUI 接続(WinSCP)

WSL2 の IP 確認

hostname -I | awk '{print $1}'

WinSCP や FileZilla で接続

-ホスト名:WSL2 の IP(例 172.19.6.250)
-ポート :21
-プロトコル:FTP
-ユーザー名/パスワード:ftpuser / ****

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?