昨日、友人からvsftpdでのchrootの方法を聞かれた。確かにいつもchrootの設定をしているけど、いざ聞かれるとあんまり覚えていないので、すでに設定してあるサーバを見ながら答える羽目に。
ってなわけで、ここらでひとつchroot設定についてまとめておくことにする。
1.ユーザーのホームディレクトリを設定する
ProFTPdでは、設定ファイル内でchrootさせるディレクトリを指定していたんだけど、今回はFTP専用ユーザーだということなので、CentOSのローカルユーザーにホームディレクトリを設定し、そこにchrootさせる方法を採用する。
まずはusermod、あるいはvipwで、ユーザーのホームディレクトリを設定する。ここで具体的なディレクトリ名を考えるのが面倒なので、各自頭の中で名前をつけちゃってください。
2.vsftpd.confでchrootを有効にする
次に/etc/vsftpd/vsftpd.confにてchrootを有効にするのだけど、ここで二通りのルートに分岐する。一つ目は、chrootしたいユーザーを登録するルート。基本はchrootさせず、特定のユーザーのみchrootしてしまう設定となる。
もうひとつは、すべてのユーザーをchrootさせるが、特定のユーザーはchrootしないように指定するルート。
2.1.chrootしたいユーザーを指定する方法
/etc/vsftpd/vsftpd.confを開き、下記の二箇所のコメントをはずして設定を有効にする。
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_listつぎに、/etc/vsftpd/chroot_listというファイルを新規作成し、chrootしたいユーザーの名前を記述する。(一行に一ユーザーです)
2.2.chrootしないユーザーを指定する方法
/etc/vsftpd/vsftpd.confを編集する。上の方法に加えて「chroot_local_user=YES」を設定する。
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=YESこれで、ローカルユーザーはすべてchrootするようになり、chroot_listには、chrootさせたくないユーザーの名前を書くことになる。
ユーザーがどんどん増えるので、その都度ユーザー名をchroot_listに追記するのが面倒な場合はこっちを選択したほうがよいです。
3.vsftpdを起動する
上記どちらかの設定が完了したら、chkconfigでvsftpdを有効にして起動する。
ftpでログインして確認すると、chrootしている場合はホームディレクトリの下にしかアクセスできないようになっているはず。
個人的には、サーバの管理ユーザー(=自分)以外はchrootしてしまいたいので、2.2の方法を採ったほうが良いんじゃないかなと思う。
