ゲスト FTP(wu-ftpd)の設定

[サーバの実験室 Redhat/Fedora]

作成 : 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.

[サーバの実験室 Redhat/Fedora]