気まま研究所ブログ

ITとバイク、思ったことをてきとーに書きます。

Raspberry Pi 3でウェブサーバーを建てる ② vsftpd編

前回Raspberry Pi 3の初期設定を書きました。
第二回ではFTPサーバーの設定を行っていきます。
ウェブサーバー側でよく使うので先に設定しておきます。

全体の予定としては、
②. FTPの設定
③. Apacheのインストール・基本設定
④. Wordpressのインストール
⑤. 名前ベースのバーチャルホストを設定
⑥. SSLの設定

と言った感じに進めていきます。
少々長くなりますが、お付き合いください。


vsftpdのインストール

まずはvsftpdをインストールします。
ここは特に書くこともないのでコマンドをそっと置いておきます。
なお、updateとupgradeは任意で行ってください。

sudo apt-get install vsftpd


vsftpdの設定

続いて基本的な部分の設定を行っていきます。
なお、以下の設定は私の環境での例です。
必ず同じ設定でなければならないというわけではないので適所変更してください。

cd /etc/
sudo vi vsftpd.conf

※vsftpd.conf

# anonymousでのアクセスを禁止します
anonymous_enable=NO
# ローカルユーザーでのアクセスを許可します
local_enable=YES
# ファイルシステムを変更する操作を許可します
write_enable=YES
# アップロード時のパーミッションを変更します
# 777 - unmask
# 777 - 022 = 755
local_umask=022
# ASCIIモードでアップロードします。
ascii_upload_enable=YES
# ASCIIモードでダウンロードします。
ascii_download_enable=YES
# ローカルユーザーが設定したrootディレクトリより上に行くことができないようにします
chroot_local_user=YES
# ユーザー毎の設定を保存・読み込むディレクトリを指定します
user_config_dir=/etc/vsftpd/user_conf
# ユーザーリストに列挙済みのユーザーのみアクセスを許可します
userlist_enable=YES
userlist_deny=NO
# ユーザーを列挙するリストファイル
userlist_file=/etc/vsftpd.user_list
# なぜかこれがないとローカルユーザーでの接続ができません
# 理由が知りたい・・・。
seccomp_sandbox=NO
allow_writeable_chroot=YES

ざっと列挙しましたが、私はこのように設定しています。
最後2行は現在おまじない状態です。
どなたか理由ご存知でしたら教えていただけませんか・・・。

最後にサーバーを起動します。

sudo service vsftpd start

なお、起動済みと出た場合は

sudo service vsftpd restart

と入力してください。


ローカルユーザーの追加

スーパーユーザーをFTPアカウントとして使うのは危険ですのでまずは専用のローカルアカウントを作成しましょう。
ユーザーアカウント作成は adduserコマンド を使用します。
コマンドの詳細な説明は別のサイト様にてご確認ください。

sudo adduser --shell /usr/sbin/nologin --home /home/hoge hoge
pi@raspberrypi:~ $ sudo adduser --shell /usr/sbin/nologin --home/home/hoge hoge
Adding user `hoge' ...
Adding new group `hoge' (1003) ...
Adding new user `hoge' (1003) with group `hoge' ...
Creating home directory `/home/hoge' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for hoge
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y
pi@raspberrypi:~ $

これで作成が完了です。

次に、/usr/sbin/nologinのFTPログインを許可します。
標準設定では許可がされていない ため、 ログインができません

sudo vi /etc/shells

※/etc/shells

/usr/sbin/nologin

これでnologinでFTPログインができるようになります。
なお、ログインできるのは FTPのみでルートログインはできません


FTPにユーザーを追加する

続いてFTPにユーザーを追加していきます。
/etc/vsftpd.confに設定しました以下のファイルを使うので気を付けてください。

ユーザー個別の設定を入れるフォルダ: /etc/vsftpd/user_conf
ユーザーを列挙するファイル: /etc/vsftpd.user_list

まずはユーザーリストに新規作成したユーザーを追加しましょう。

sudo vi /etc/vsftpd.user_list

※vsftpd.user_list

hoge

これでログインができるようになりました。
ですが、このままではアカウント毎のホームディレクトリがルートディレクトリとして指定されているため、目的の場所にはアクセスできません。
そこで、「/etc/vsftpd/user_conf」にユーザー毎の設定ファイルを作ります。
今回はhogeというユーザー名ですのでhogeというファイルを作成します。

sudo vi hoge

hoge

local_root=/var/www/hoge

これでhogeアカウントでのログインが可能になります。
FTPサーバーの再起動は必要ありませんが、念のため再起動もしておきましょう。

sudo service vsftpd restart


FTP及び、Webのユーザーディレクトリを作る

さて、ここまででログイン自体は可能になりましたが、ルート指定したディレクトリがまだないので途中でエラーが発生します。
ユーザー作成の段階でホームディレクトリを指定していれば問題はないのですが、今回はしていないのでディレクトリを作ります。

cd /var/www/
sudo mkdir hoge
sudo chown hoge:hoge hoge

これでディレクトリ作成と所有者の変更が完了しました。
あとはログインをしてみると正常ログインができると思います。



とりあえずここまでにしておきます。
本当はグループ管理やSSL設定をしないといけないんですが、私自身そこまで理解できていないのでまた今度書くことにします。
次はApacheの設定を行いますよ!