サイトアイコン 知的好奇心

UbuntuでFTP(vsftpd)が行えるようにする方法

UbuntuでFTPが行えるようにする方法をご紹介します。

vsftpdをインストール&設定を行います。

条件

vsftpdインストール

インストール可能なパッケージの「一覧」を更新

$ sudo apt update

vsftpdをインストール

$ sudo apt install vsftpd

インストール確認(バージョン確認)

$ vsftpd -v
vsftpd: version 3.0.3

設定

vsftpdの設定編集

$ sudo vi /etc/vsftpd.conf

今回は以下のように設定しました。

# vsftpdをスタンドアロンモードで起動する。
listen=YES

# IPv4ソケットの代わりにIPv6ソケットをリスンする。
listen_ipv6=NO

# 匿名ユーザのログインを許可する。
anonymous_enable=NO

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

# ファイルシステムを変更するFTPコマンドを許可する。
write_enable=YES

# ローカルユーザがディレクトリやファイルを作成する際に使用されるumaskを指定する。
local_umask=022

# ユーザが新しいディレクトリに初めて移動したとき、メッセージを表示する。
dirmessage_enable=NO

# ディレクトリリストを表示するとき、時間をローカルタイムで表示する。
use_localtime=YES

# ファイルのアップロードとダウンロードをログファイルに記録する。
xferlog_enable=YES

# アクティブ (ポート) モード時の、サーバ側が使用するデータ転送用ポート番号の指定方法を定義する。
connect_from_port_20=NO

# ユーザーのログイン ディレクトリをそのユーザーのルートディレクトリに変更する。
# ログインディレクトリの外側にアクセスできなくする。(ただし、chroot_list_fileで指定したファイルにユーザーを記述すれば可能)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
allow_writeable_chroot=YES

# vftpdがファイルアクセスを要求しないときに使用するディレクトリを指定する。
secure_chroot_dir=/var/run/vsftpd/empty

# vsftpdが使用するPAMサービス名を指定する。
pam_service_name=vsftpd

# SSL暗号化接続に使用するRSA証明書の場所を指定する。
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

# vsftpd用の秘密鍵ファイルを指定する。
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

# FTP over SSLを有効にする。
ssl_enable=NO

# PASVデータコネクションで使用する最小/最大ポート(FWでポートを開ける必要あり)
pasv_min_port=60001
pasv_max_port=60001

ユーザー追加

FTP用のユーザーを追加

$ sudo adduser USER_NAME

すべてのディレクトリにアクセス許可をするユーザーを設定

$ sudo vi /etc/vsftpd.chroot_list

今回は空ファイルのみ作成しました。
全てのディレクトリにアクセスしたい場合、当該ファイルにユーザー名を記述します。

vsftpdの設定反映

vsftpdの再起動

$ sudo service vsftpd restart

動作確認

以下のような表示になればOKです。

$ telnet localhost 21
Trying ::1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 (vsFTPd 3.0.3)

以下のコマンドで終了します。

Ctrl + ]
telnet> q

FW設定

必要に応じてサーバーのFW設定を行います。

今回は、ポート21、60001を開けました。
(FTPのパッシブモードで、この2つのポートを使用します。)

FTPの実行

FTPソフト(FFFTP、WinSCPなど)を用いてFTPを行います。

ここでは、WinSCPによる接続を行います。

ログイン画面で以下を設定します。

保存ボタンを押して情報を保存後、ログインボタンを押します。

ログインが実行され、「/<ルート>」ディレクトリが表示されます。
(設定により、ユーザーのルートディレクトリになっています。)

アップロードしたいファイルを選択し、「アップロード」を選択すると、対象ファイルがサーバーへアップロードされます。

参考

vsftpdの設定(vsftpd.conf)

http://www.nina.jp/server/redhat/vsftpd/vsftpd.conf.html

ftp接続でrefusing to run with writable root inside chrootが出た時の対処法

https://mussyu1204.myhome.cx/wordpress/it/?p=107

モバイルバージョンを終了