ゲスト FTP(wu-ftpd)の設定
作成 : 2002/08/16
修正 : 2003/08/17
※FTPDについては、wu-ftpdからvsftpdに移行した。
ゲスト FTP は、ユーザアカウントとパスワードの入力が必要なため、anonymous ftp よりはセキュリティが高い。 、また、ユーザディレクトリに chroot され、上位のディレクトリに移動できないため、実ユーザで ftp するより不安が少ない (telnet や ssh できると意味なしだけど)
ゲスト FTP アカウントの作成
useradd コマンドで、ゲスト FTP 用のユーザアカウントを作成する。 パスワードの設定も忘れずに。
# useradd ftpuser # passwd ftpuser
/etc/passwd ファイルで、FTP ユーザアカウントのホームディレクトリを、/var/ftp に設定する。 FTP ログインしたとき、ホームディレクトリより上位に移動させない(chroot)ようにするため、「/var/ftp/./」と記述する。
ftpuser:x:1000:1000::/var/ftp/./:/bin/bash
/etc/ftpaccess の編集
ftpaccess ファイルで、guest として扱われるユーザまたはグループを設定する。 guest として扱われるユーザでログインすると、anonymous ftp と同様に扱われ、ホームディレクトリに chroot される。 anonymous ユーザは、upload でアップロードできるディレクトリを指定しない限り、ファイルのアップロードはできない。 guest ユーザは、ディレクトリに書き込みパーミッションがあれば、ファイルのアップロードができる。
guestuser ftpuser
guestuser で、ゲストとして FTP させるユーザを設定する。 グループを設定するには guestgroup を使用する。
class inner real *.nina.jp class outer guest !*.nina.jp
*.nina.jp 以外(「!」は NOT)からの接続されるゲストユーザを、「outer」というクラス名で定義する。 *.nina.jp のホストからは実ユーザログインを許可して、それ以外のホストからはゲストログインのみ許可している。
anonftp パッケージのインストール
guest ftp をさせるには、ゲストユーザのホームディレクトリ(今回は /var/ftp)配下にいくつかのフォルダとファイルを設置する。 これは、guest ftp するとユーザのホームディレクトリに chroot されるため、/bin/ls などのファイルにアクセスできなくなるため。
自分でディレクトリを作成して、必要なファイルをコピーしてもいいが、anonftp パッケージをインストールすることで、手間が省ける。 インストールした後は、オーナーシップとパーミッションの確認をすること!
/var/ftp ディレクトリ (オーナシップ root : root / パーミッション 0755)
d--x--x--x 2 root root 4096 7月 18 17:42 bin d--x--x--x 2 root root 4096 7月 18 17:32 etc drwxr-xr-x 2 root root 4096 7月 18 17:32 lib drwxr-sr-x 2 root ftp 4096 8月 22 2001 pub
/var/ftp/bin ディレクトリ (オーナシップ root : root / パーミッション 0111)
---x--x--x 2 root root 17276 6月 25 2001 compress ---x--x--x 2 root root 48796 6月 26 2001 cpio ---x--x--x 4 root root 51228 8月 24 2001 gzip ---x--x--x 2 root root 45948 8月 9 2001 ls ---x--x--x 2 root root 150796 8月 27 2001 tar lrwxrwxrwx 1 root root 4 7月 18 17:32 zcat -> gzip
ファイルのパーミッションは 111 にする。
/var/ftp/etc ディレクトリ (オーナシップ root : root / パーミッション 0111)
-r--r--r-- 1 root root 53 8月 22 2001 group -r--r--r-- 1 root root 409 7月 18 17:32 ld.so.cache -r--r--r-- 1 root root 0 7月 18 17:32 ld.so.conf -r--r--r-- 1 root root 79 8月 22 2001 passwd
ファイルのパーミッションは 111 にする。 passwd ファイルと group ファイルは、/etc ディレクトリにあるファイルと同じようなものだが、そのままコピーしないこと! /var/ftp 配下に設置するファイルの所有者と所有グループだけを残すようにする。
極端なことを言えば、passwd ファイルと group ファイルはなくてもかまわない。 FTP ログインして ls -l を実行したとき、ファイルのオーナーシップが UID と GID で表示されるだけなので。
/var/ftp/lib ディレクトリ (オーナシップ root : root / パーミッション 0755)
-rwxr-xr-x 2 root root 454514 9月 5 2001 ld-2.2.4.so lrwxrwxrwx 1 root root 11 7月 18 17:32 ld-linux.so.2 -> ld-2.2.4.so -rwxr-xr-x 2 root root 5716491 9月 5 2001 libc-2.2.4.so lrwxrwxrwx 1 root root 13 7月 18 17:32 libc.so.6 -> libc-2.2.4.so -rwxr-xr-x 2 root root 448789 9月 5 2001 libnsl-2.2.4.so lrwxrwxrwx 1 root root 15 7月 18 17:32 libnsl.so.1 -> libnsl-2.2.4.so -rwxr-xr-x 2 root root 255971 9月 5 2001 libnss_files-2.2.4.so lrwxrwxrwx 1 root root 21 7月 18 17:32 libnss_files.so.2 -> libnss_files-2.2.4.so lrwxrwxrwx 1 root root 19 7月 18 17:32 libtermcap.so.2 -> libtermcap.so.2.0.8 -rwxr-xr-x 2 root root 11832 7月 10 2001 libtermcap.so.2.0.8
ファイルのパーミッションは 755 にする。
/var/ftp/pub ディレクトリ (オーナシップ root : ftp / パーミッション 2755)
/var/ftp/pub ディレクトリ配下に、FTP させるファイルを置く。 pub ディレクトリは set gid がセットされているので、このディレクトリにファイルを新規作成すると、そのファイルの所有グループはディレクトリの所有グループ(ftp)と同じになる。
set uid は、anonymous ftp のための設定だと思う。 デフォルトの umask が 002 で、ファイルのパーミッションは 664 になるから、set gid の意味ってなに?
ゲスト FTP ログイン
ゲストユーザのアカウントとパスワードで、FTP サーバに接続してみる。 うまくゲストとしてログインすると、次のようなメッセージが表示される(はず)。
230 User ftpuser logged in. Access restrictions apply.