FTPに接続するユーザごとにホームディレクトリを指定し、上位階層へのアクセスを拒否する設定を記載します。
FTPサーバ(vsftpd)を使用しており、FTPユーザごとにアクセス制限をかける必要があったので、その時に行った際の手順やvsftpdの設定内容などをメモします。
下記の設定を行うことでFTPユーザが上のディレクトリに移動できなくなりました。
■ FTPサーバ(vsftpd)
FTP(ファイル転送)サーバの一つです。
yumでインストールすることができます。
■ 設定手順
1.FTPで使用するユーザを作成します。
ユーザの作成については、Linux:Linuxのadduserコマンドで新規ユーザを作成する
で紹介しています。
2.ユーザが作成されたことを確認します。
3.vsftpdディレクトリに移動します。
# cd /etc/vsftpd/
vsftpdディレクトリ内を確認すると下記のようなファイル・ディレクトリが存在します。
# ls chroot_list ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh
サーバによって存在しないファイルもあります。
その場合は必要なファイル、ディレクトリを作成します。
4.vsftpd_user_confディレクトリを作成する
vsftpd.confの設定に下記の内容を記載します。
ユーザごとの設定ファイルを参照する為のパスを記載します。
user_config_dir=/etc/vsftpd/vsftpd_user_conf
vsftpd_user_confディレクトリを作成します。
# mkdir /etc/vsftpd/vsftpd_user_conf
vsftpdディレクトリ内を確認します。
# ls chroot_list ftpusers user_list vsftpd.conf vsftpd_conf_migrate.sh vsftpd_user_conf
vsftpd_user_confディレクトリが作成されたことが確認できます。
5.追加したユーザの名前のファイルを作成し、ホームディレクトリを設定します。
※FTPの時だけ別のホームディレクトリを指定する場合に記載します。
hogeユーザを作成した場合
# vi vsftpd_user_conf/hoge
新規作成したファイルにホームディレクトリの設定をします。
local_root=/var/www/html/hoge
6.user_listに新規ユーザを追加し、FTP接続を可能にします。
user_listはvsftpd.confの設定により、意味が異なります。
vsftpd.conf設定が下記の場合
userlist_enable=YES userlist_deny=NO
user_listファイルを編集します。
# vi /etc/vsftpd/user_list
user_listファイルにユーザ名を設定します。
user hoge
7.追加したユーザが指定したディレクトリより上の階層にいけないように設定します。
vsftpd.conf設定が下記の場合
chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
chroot_listファイルを編集します。
# vi chroot_list
chroot_listに追加したユーザを設定します。
hoge
8.vsftpdを再起動します。
# /etc/init.d/vsftpd restart vsftpd を停止中: [ OK ] vsftpd 用の vsftpd を起動中: [ OK ]
※vsftpd.confを変更していない場合は再起動しなくてもOKです。
9.追加したユーザでFTPに接続します。
上記で指定した/var/www/html/hogeにアクセスします。
また、上位ディレクトリへアクセスできないことが確認できます。
※ファイル、ディレクトリが編集できない場合は、ファイル、ディレクトリの所有者・所属グループを変更する必要があります。
■ ftpusersファイル
アクセス制御ファイルの一つです。
user_listでユーザを設定していてもftpusersに記載されているユーザーはFTPサーバーにアクセスできません。
ユーザーがFTPへ完全に接続させないようにする場合はftpusersにユーザを記載します。
■ user_listファイル
vsftpd.confの設定により、user_listの意味が異なります。
下記にvsftpd.confの設定内容を記載します。
「user_listファイルに追加したユーザーのアクセスを禁止する場合」
userlist_enable=YES userlist_deny=YES
「user_listファイルに追加したユーザーのアクセスを許可する場合」
userlist_enable=YES userlist_deny=NO
■ chroot_listファイル
vsftpd.confの設定で有効な場合、制限をかけたいユーザーを設定できます。
設定したユーザーは上位ディレクトリへの移動ができなくなります。
chroot_list_enableをYESにした場合、chroot_list_fileで指定したchroot_listファイルは必須になります。
ファイルが存在しない場合、全てのユーザがログインできなくなるので、ユーザいない場合でも、空のファイルを作る必要があります。
chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list