vsftpdによるchrootの設定

ftpを設定していてchrootの設定をしたので備忘録として書きます。

chrootとは

簡単に言えばルートディレクトリを変更する機能です。
ルートディレクトリを変更することで別階層のディレクトリやファイルにアクセスできなくします。

vsftpdをインストール
$ yum -y install vsftpd
設定ファイルの編集
$ vi /etc/vsftpd/vsftpd.conf

以下を確認する
anonymous_enable=NO #匿名の許可
local_enable=YES #ローカルユーザの許可
write_enable=YES #書き込み許可
ascii_upload_enable=YES #アスキーモードの許可
ascii_download_enable=YES #アスキーモードの許可
chroot_local_user=YES #chrootの有効化
chroot_list_enable=YES #chroot_list_fileの有効化、yesの場合は最低でも空のファイルが必要になる
chroot_list_file=/etc/vsftpd.chroot_list #chroot_local_user=YESの場合はchrootを適応しないユーザーリスト、逆にNOの場合はchrootを適応するリスト。
ls_recurse_enable=YES ディレクトリごと一括での操作許可
allow_writeable_chroot=YES 書き込み権限があるとchrootができない使用なのでそれを無効化、デフォルトではなかったので追加

# 最終行へ追記:chrootのルートディレクトリ指定、指定しない場合はユーザーのホームディレクトリ直下になる
local_root=ルートパス

chroot_list_fileの設定(改行区切りで記述する)

$ vi /etc/vsftpd.chroot_list

終わったら再起動する
$ systemctl restart vsftpd

このままだとすべてのユーザーが同じルートディレクトリになってしまいます。
個別に分けるために以下の設定を行います。

設定ファイルに以下を追加
$ vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/user_conf

/etc/vsftpd/user_confを作ってユーザー名のファイルを作成
$ vi /etc/vsftpd/user_conf/hoge
#local_rootを記述する
local_root=ルートパス

終わったら再起動する
$ systemctl restart vsftpd

カテゴリー: server, 未分類

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*