ラック
Home > ブログ > 記事 > 2017年7月 > 上位ディレクトリに行けないように制限をかけたFTPサーバ構築でつまづいた話

上位ディレクトリに行けないように制限をかけたFTPサーバ構築でつまづいた話

カテゴリ: サーバ

  1. FTPログインしたユーザのルートディレクトリを指定
  2. FTPログインしたユーザが、指定したディレクトリより上位のディレクトリに行けない

を満たすように設定した際につまづいたのでメモ。

まず、ユーザごとにルートディレクトリを指定するには

# vi /etc/vsftpd/vsftpd.conf

chroot_list_enable=YES #chrootをオン
chroot_list_file=/etc/vsftpd/chroot_list #chroot_list_enable=YES 指定時は必須

chroot_list_file は chroot_list_enable の対象除外者のリストなので、今回はファイル作成のみで空っぽのファイルとします。
ちなみに、ファイルがない場合は

500 OOPS: vsftpd: could not open chroot() list file:/etc/chroot_list

というエラーメッセージで怒られるので、

# vi /etc/vsftpd/chroot_list

で空ファイルを作成します。

次にユーザごとにルートディレクトリを指定する設定は

# vi /etc/vsftpd/vsftpd.conf

user_config_dir=/etc/vsftpd/users

とします。この下に、ユーザ名のファイルを作成。ユーザがftpuserであれば、

# mkdir /etc/vsftpd/users

## 設定保管ディレクトリ作成

# vi /etc/vsftpd/users/ftpuser

local_root=/var/www/html/ftpuser/

となります。あとは該当ディレクトリを作成。

# mkdir /var/www/html/ftpuser/
# chown ftpuser:ftpuser /var/www/html/ftpuser/

ここまで設定して、vsftpを再起動し、FTP接続しようとすると

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

というエラーで怒られました。書き込み権限がないとのことなので、

# vi /etc/vsftpd/vsftpd.conf

allow_writeable_chroot=YES

と追記し、再起動。これで上手く行きました。


最終的な構築としては

# yum install vsftpd ftp

## 略

完了しました!

# vi /etc/vsftpd/vsftpd.conf

#anonymous_enable=YES
anonymous_enable=NO

#ascii_upload_enable=YES
#ascii_download_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES

#ftpd_banner=Welcome to blah FTP service.
ftpd_banner=Welcome to blah FTP service.

## ここまで、コメント外したり既存の設定を変更(初期設定)

use_localtime=YES
force_dot_files=YES
local_root=/var/www/html/
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
user_config_dir=/etc/vsftpd/users
allow_writeable_chroot=YES

## 末尾に追記

# mkdir /etc/vsftpd/users

## 設定保管ディレクトリ作成

# vi /etc/vsftpd/users/ftpuser

local_root=/var/www/html/ftpuser/

## ルートディレクトリ指定

# mkdir /var/www/html/ftpuser/
# chown ftpuser:ftpuser /var/www/html/ftpuser/

## ルートディレクトリ作成

# vi /etc/vsftpd/chroot_list

## 空ファイル

起動

# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
# systemctl start vsftpd
#

こんな流れのはず(途中紆余曲折していたのをまとめたのが上記)。

が、二人目のユーザでは上位ディレクトリに行けてしまったので何か足りないっぽい……。

参考サイト

タグ: サーバ環境・構築

 



関連する記事一覧