Scroll to navigation

VSFTPD.CONF(5) File Formats Manual VSFTPD.CONF(5)

名前

vfstpd.conf - vsftpd の設定ファイル

説明

vsftpd.conf は vsftpd の動作の様々な側面を制御するのに使用する。 デフォルトでは、vsftpd は /etc/vsftpd.conf という場所を探す。 しかし、vsftpd のコマンドライン引数で上書きできる。 コマンドライン引数は vsftpd の設定ファイルのパスである。 設定ファイルを指定できることで、 xinetd のような高等な inetd において、バーチャルホストごとに異なる設定ファイルで vsftpdを起動したい場合には便利である。

書式

vsftpd.conf の書式はとても単純である。 各行はコメントかディレクティブ(指示語)のどちらかである。 # で始まる行はコメントであり、無視される。 ディレクティブ行は次のフォーマットである。

option=value

オプション(option)、=、値(value)の間に空白を入れるとエラーになるので 注意すること。

各設定はコンパイル時に指定されたデフォルト値を持つが、 設定ファイルによって変更することが可能である。

真偽値オプション

以下は引数に真偽値をとるオプションのリストである。 真偽値は YES または NO である。

YES に設定した場合、anonymous(匿名)ユーザはある条件の下でディレクトリ を新規に作成することが許可される。 実際に機能させるには write_enable オプションが有効になっていなければならず、また anonymous ftp ユーザが 親ディレクトリに対する書き込み権限を持っている必要がある。

デフォルト: NO

YES に設定した場合、anonymous ユーザに ファイルのアップロードとディレクトリの作成以外の書き込み操作、 すなわち削除と名前の変更を許可する。 一般的には推奨されないが、オプションの完全性のために含まれている。

デフォルト: NO

YES に設定した場合、ある条件の下で anonymous ユーザに ファイルのアップロードを許可する。 実際に機能させるには、 write_enable オプションを有効にしなければならず、また anonymous ftp ユーザが 親ディレクトリに対する書き込み権限を持っている必要がある。

デフォルト: NO

YES に設定した場合、 anonymous ユーザには誰でも読み込み可になっているファイルの ダウンロードのみを許可する。 これは、ftp ユーザがファイルを 所有できることを (特にアップロードされたファイルがある場合に) 認めている。

デフォルト: YES

anonymous ログインを許可するかどうかを制御する。 YES にした場合、ユーザー名 ftpanonymous の両方を anonoymous ログインとして認識する。

デフォルト: YES

YES に設定した場合、 ダウンロード時の ASCII モードでのデータ転送を許可する。

デフォルト: NO

YES に設定した場合、 アップロード時の ASCII モードでのデータ転送を許可する。

デフォルト: NO

YES に設定した場合、特殊な FTP コマンド "非同期 ABOR" を許可する。 この機能を使用するのは、分別のない FTP クライアントだけである。 さらに、この機能は取り扱いが難しいので、デフォルトで無効にされている。 この機能を有効にしなかった場合には、 転送を中止したときに不幸にも固まる FTP クライアントがあるので、 これを有効にしたくなるかもしれない。

デフォルト: NO

YES に設定し、vsftpd が "listen" モードで起動された場合、 リスナープロセスをバックグラウンドにする。 すなわち、vsftpd を起動したシェルにすぐに制御が戻る。

デフォルト: NO

注意! このオプションは PAM 対応ではない vsftpd でのみ意味を持つ。 NO に設定した場合、ローカルユーザのログイン時の、 シェルが有効であるかどうかの /etc/shells チェックをしない。

デフォルト: YES

YES に設定した場合、SITE CHMOD コマンドを許可する。 注意! これはローカルユーザにのみ適用される。 anonymous ユーザは、決して SITE CHMOD を使用できない。

デフォルト: YES

YES に設定した場合、anonymous でアップロードされたファイルの所有者を chown_username で設定したユーザにする。 管理上、そして多分セキュリティの観点から便利である。

デフォルト: NO

YES に設定した場合、ログイン後にホームディレクトリへと chroot() されるローカルユーザのリストを指定できる。 chroot_local_user を YES に設定した場合には、意味が異なってくる。 リストはその場合、chroot() jail へと移動されないユーザ のリストとなる。 デフォルトでは、このリストは /etc/vsftpd.chroot_list ファイルであるが、 chroot_list_file 設定によってこれを変更することができる。

デフォルト: NO

YES に設定した場合、ローカルユーザは(デフォルトで)ログイン後に ホームディレクトリへと chroot() される。 警告: このオプションはセキュリティに密接に関連する。 ユーザがアップロード権限を持っていたり、シェルでのアクセスができる場合は 特にである。 何をしているかを理解している場合にのみ有効にすること。 これらのセキュリティの問題は vsftpd に特有の問題ではないことに 注意してほしい。 ローカルユーザを chroot() jail に入れることができるすべての FTP デーモンにおいて、この問題がある。

デフォルト: NO

PORT でのデータ接続において、サーバが(送信元)ポートに 20(ftp-data) を使うかどうか制御する。 セキュリティ上の理由から、いくつかのクライアントはポート 20 を要求する。 逆に言えば、このオプションを無効にすることで、わずかではあるが vsftpd をより少ない特権で動作させることができる。

デフォルト: NO (ただし、サンプルの設定ファイルでは有効になっている)

YES に設定した場合、anonymous ユーザのパスワード(e-mail アドレス)のうち、 ログインを拒否したいもののリストを設定できる。 デフォルトでは、このリストは /etc/vsftpd.banned_emails ファイルであるが、 banned_email_file 設定によってこれを変更することができる。

デフォルト: NO

NO に設定した場合、すべてのディレクトリ表示コマンドは、 アクセス拒否 (permission denied) になる。

デフォルト: YES

YES に設定した場合、FTP サーバ上のユーザが 新たなディレクトリに初めて入ったときに、メッセージを見せることができる。 デフォルトでは、ディレクトリの .message というファイルが調べられるが、 message_file 設定によってこれを変更することができる。

デフォルト: NO (ただし、サンプルの設定ファイルでは有効になっている)

NO に設定した場合、すべてのダウンロード要求はアクセス拒否になる。

デフォルト: YES

YES に設定した場合、デフォルトで /var/log/xferlog/var/log/vsftpd.log という二つのログファイルを同時に生成する。 前者は wu-ftpd 形式の転送ログで、標準的なツールによって解析することができる。 後者は vsftpd 独自形式のログである。

デフォルト: NO

YES に設定した場合、クライアントが "a" フラグを使用していなくても、 ドット (.) で始まるファイルとディレクトリも、ディレクトリリストに表示する。

デフォルト: NO

YES に設定した場合、anonymous でないログインすべてを "guest" にクラス分けする。 guest ログインは、 guest_username 設定で指定したユーザにマッピングする。

デフォルト: NO

YES に設定した場合、ディレクトリリストでのユーザ・グループの情報を "ftp" と表示する。

デフォルト: NO

YES に設定した場合、スタンドアロンモードで起動する。 これは inetd などのスーパーサーバから起動してはいけないということを意味する。 その代わりに、vsftpd プログラムを一度だけ直接実行すればよい。 vsftpd 自身が、入ってくる接続を待ち、処理する面倒をみる。

デフォルト: NO

IPv4 ソケットの代わりに IPv6 ソケットを待ち受ける点を除けば、 listen オプションと同じである。 このオプションと listen オプションは、 どちらか一方しか指定することができない。

デフォルト: NO

ローカルユーザのログインを許可するかどうかを制御する。 YES に設定した場合、/etc/passwd にある普通のユーザアカウントを ログインに使う。

デフォルト: NO

YES に設定した場合、FTP のすべての要求と応答を記録し、 xferlog_std_format オプションを無効にする。 デバッグに便利である。

デフォルト: NO

YES に設定した場合、"ls -R" の使用を許可するようになる。 大きなサイトの一番上のレベルで ls -R を実行されると、 多くの資源を消費してしまうので、 これはセキュリティ上のちょっとしたリスクである。

デフォルト: NO

YES に設定した場合、anonymous のパスワードを尋ねるのを止める。 すなわち、anonymous ユーザーはパスワード無しでログインする。

デフォルト: NO

もし Linux 2.4 カーネルを使用しているならば、 一つの接続に一つのプロセスを使用するという、 異なったセキュリティモデルを使用することができる。 これは純粋なセキュリティモデルから少し外れるが、 性能を得ることができる。 自サイトで非常に多いユーザの同時接続をサポートし、 自分が何をしているか知っている人だけが、このオプションを有効にしたくなる。

デフォルト: NO

chroot_local_user と共に YES に設定した場合、 chroot() jail の場所はユーザごとになる。 jail は /etc/passwd にある各人のホームディレクトリから得られる。 ホームディレクトリを表わす文字列に /./ があれば、そのパスの場所が jail になる。

デフォルト: NO

NO に設定した場合、データ接続の開始において PASV を許可しない。

デフォルト: YES

YES に設定した場合、 PASV セキュリティーチェックを無効にし、 制御用の接続と異なる IP アドレスからのデータ接続を許可する。 何をしているかを理解している場合にのみ有効にすること。 唯一の道理にかなった利用法は、安全なトンネルの中で使うか、 そうでなければ、おそらくは FXP(訳注: リモートホスト間転送) を容易にするためのものである。

デフォルト: NO

NO に設定した場合、データ接続の開始において PORT を許可しない。

デフォルト: YES

YES に設定した場合、 PORT セキュリティーチェックを無効にし、 制御用の接続と異なる IP アドレスへのデータ接続を許可する。 何をしているかを理解している場合にのみ有効にすること。

デフォルト: NO

匿名ログインで許可する e-mail パスワードのリストを 指定したい場合にだけ YES に設定すること。 仮想的なユーザーを必要とせずに、 低セキュリティなコンテンツへのアクセスを制限する、 面倒の少ないやり方として便利である。 YES に設定した場合には、 email_password_file で指定されるファイルに書かれているパスワードが与えられない限り、 匿名ログインを許可しない。 このファイルのフォーマットは 1 行に 1 パスワードで、 余分な空白があってはいけない。 デフォルトのファイル名は /etc/vsftpd.email_passwords である。

デフォルト: NO

vsftpd がログインセッションを維持しようとするかどうかを制御する。 vsftpd がセッションを維持する場合、utmp と wtmp を更新しようと試みる。 認証に PAM を使用している場合には、さらに pam_session を open し、 ログアウト時に close する。 セッションのログ取得が必要なく、vsftpd をより少ない処理で動作させ、 かつ(または)より少ない権限で動作させたいならば、 これを NO に設定することができる。 注 - utmp と wtmp のサポートは PAM を有効にしてビルドした場合に限られる。

デフォルト: YES

有効にした場合、システムのプロセスリスト(例えば ps aux コマンド)に セッションの状態に関する情報を表示する。 つまり、表示されるプロセス名が vsftpd のセッションがどうなっているか (idle, downloading など)に応じて変化する。 セキュリティ上、これを off のままにしておきたいと思うのが普通である。

デフォルト: NO

YES に設定した場合、/var/log/vsftpd.log に 行くはずだったすべてのログ出力を、 代わりにシステムログに出力する。 FTPD ファシリティでログ出力をする。

デフォルト: NO

有効にした場合、 vsftpd を tcp_wrappers をサポートしてコンパイルしてあれば、 外から来る接続は tcp_wrappers のアクセス制御が適用される。 さらに IP ごとの設定のための仕組みがある。 tcp_wrappers で環境変数 VSFTPD_LOAD_CONF をセットした場合 (訳注: /etc/hosts.allow で指定することが可能)、 その環境変数で指定したファイルを vsftpd の設定ファイルとして読み込む。

デフォルト: NO

ディレクトリリストを表示した場合、 デフォルトではユーザとグループのフィールドが ID の数値で表示される。 このオプションを YES にすれば、名前を示す文字列になる。 性能上の理由から、デフォルトは NO である。

デフォルト: NO

有効にした場合、ディレクトリリストの表示にローカルのタイムゾーンを使用する。 デフォルトは GMT での表示である。 FTP の MDTM コマンドが返す時刻もこのオプションの影響を受ける。

デフォルト: NO

使用しているプラットフォーム上で sendfile() システムコールを 使う場合の相対的効果を確認するための、内部的な設定。

デフォルト: YES

このオプションは userlist_enable が有効な場合にのみ意味を持つ。 NO にした場合、 userlist_file で指定したファイルに明示的にリストされたユーザ以外は ログインが拒否される。 ログインを拒否する場合、ユーザにパスワードを尋ねる前に拒否をする。

デフォルト: YES

有効にした場合、 userlist_file で指定したファイルをユーザ名のリストとして読み込む。 このファイルに名前のあるユーザでのログインしようとすると、 パスワードを尋ねられる前に拒否される。 これは暗号化されていないパスワードが(ネットワーク上を) 転送されてしまうのを防ぐのに効果的である。 userlist_deny も参照のこと。

デフォルト: NO

YES に設定した場合、仮想ユーザにローカルユーザと同じ権限を使用する。 デフォルトでは、仮想ユーザは anonymous ユーザと同じ権限を持ち、 それは(特に書き込み権限に関して)より制限されたものになりがちである。

デフォルト: NO

ファイルシステムを変更するようなすべての FTP コマンドを 許可するかどうかを制御する。 対象となるコマンドは STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, SITE である。

デフォルト: NO

有効にした場合、ログファイルにはアップロードとダウンロードの詳細が記録される。 デフォルトでは、ログファイルは /var/log/vsftpd.log として置かれるが、 vsftpd_log_file の設定によって変更することが可能である。

デフォルト: NO (ただし、サンプルの設定ファイルでは有効になっている)

有効にした場合、wu-ftpd で使われているような標準的な xferlog フォーマットで 転送ログファイルを作成する。 既存の統計情報を生成するプログラムを再利用できるので、これは便利である。 しかしデフォルトの書式は、より読み易いものである。 この形式のログファイルのデフォルトの場所は /var/log/xferlog であるが、 xferlog_file の設定によって、これを変更することが可能である。

デフォルト: NO

数値オプション

以下は引数に数値をとるオプションである。 数値は非負整数でなければならない。 8 進数は umask オプションで便利なのでサポートされている。 8 進数で指定するには、先頭の数字を 0 にする。

リモートのクライアントが PASV でデータ接続を確立するまでの タイムアウト秒数。

デフォルト: 60

anonymous (匿名) クライアントの最大データ転送レート。 秒あたりのバイト数。

デフォルト: 0 (無制限)

anonymous (匿名) ユーザが生成したファイルの umask 値。 注意! 8 進数で指定したければ、先頭の "0" を忘れないように。 そうしないと、指定した値は 10 進数の値として扱われてしまう。

デフォルト: 077

PORT でのデータ接続において、リモートクライアントが応答するまでの タイムアウト秒数。

デフォルト: 60

データ転送に何ら進捗がない場合に、タイムアウトと見なすまでの秒数。 タイムアウトが発生した場合、リモートクライアントは蹴り出される。

デフォルト: 300

ファイルがアップロードで作成された場合のファイル・パーミッション。 この値の上に umask がさらに適用される。 実行可能なファイルのアップロードを許可したければ 0777 に変更すればよい。

デフォルト: 0666

PORT での接続の場合の、送信元のポート (かっこう悪い名前の connect_from_port_20 が有効である場合のみ)。

デフォルト: 20

制御接続において、FTP コマンドが何もない場合に タイムアウトと見なすまでの秒数。 タイムアウトが発生した場合、リモートクライアントは蹴り出される。

デフォルト: 300

スタンドアロンモードの場合の、 FTP 接続を待ち受けるポート番号。

デフォルト: 21

ローカルユーザの最大データ転送レート。 秒あたりのバイト数。

デフォルト: 0 (無制限)

ローカルユーザが生成したファイルの umask 値。 注意! 8 進数で指定したければ、先頭の "0" を忘れないように。 そうしないと、指定した値は 10 進数の値として扱われてしまう。

デフォルト: 077

スタンドアロンモードの場合に、接続可能なクライアントの最大数を指定する。 最大数を越えて接続したクライアントには、エラーメッセージを渡す。

デフォルト: 0 (無制限)

スタンドアロンモードの場合に、同じ送信元 IP アドレスからの接続の 最大数を指定する。 この制限を越えて接続したクライアントには、エラーメッセージを渡す。

デフォルト: 0 (無制限)

PASV でのデータ接続に割り当てるポートの最大値。 ファイアウォールで指定するポートの範囲を狭めるのに使用できる。

デフォルト: 0 (任意のポートを使用)

PASV でのデータ接続に割り当てるポートの最小値。 ファイアウォールで指定するポートの範囲を狭めるのに使用できる。

デフォルト: 0 (任意のポートを使用)

これを変更したいとは思わないだろうが、 しかし、より滑らかな帯域制御をしたければ、 これを 8192 のような値に設定してみること。

デフォルト: 0 (vsftpd がふさわしい値を選ぶ)

文字列オプション

以下は引数に文字列をとるオプションである。

このオプションは、anonymous (匿名) ログイン後に変更する ディレクトリ名を表す。 ディレクトリ変更の失敗は、静かに無視する。

デフォルト: (なし)

anonymous ユーザのパスワード (e-mail アドレス) のうち、 許可しないもののリストのファイル名を指定する。 オプション deny_email_enable が有効の場合にのみ、このファイルは参照される。

デフォルト: /etc/vsftpd.banned_emails

誰かがサーバに接続したときに表示するテキストを格納するファイル名 を指定する。 このオプションが設定された場合、 ftpd_banner で指定される文字列よりも優先される。

デフォルト: (なし)

anonymous (匿名) でアップロードされたファイルの所有者となる ユーザのユーザ名を指定する。 このオプションは、関連するもう一つのオプション chown_uploads が有効な場合にのみ意味を持つ。

デフォルト: root

ホームディレクトリ内の choot() jail に入れられる ローカルユーザのリストを示すファイル名を指定する。 このオプションは、 chroot_list_enable が有効な場合にのみ意味を持つ。もし chroot_local_user が有効であれば、このリストは chroot() jail に入れられ*ない* ユーザのリストになる。

デフォルト: /etc/vsftpd.chroot_list

(ログイン後に)許可する FTP コマンドのリストを、コンマで区切って指定する (USER, PASS, QUIT は、ログイン前なら常に許可する)。 指定しなかったコマンドは拒否する。 本当に FTP サーバを閉じ込めるのに強力な手段となる。 例: cmds_allowed=PASV,RETR,QUIT

デフォルト: (なし)

すべての手段でアクセスを許可しない、 ファイル名(やディレクトリ名)のパターンを指定する。 この影響をうけるファイル/ディレクトリを隠しはしないが、 それらに対するあらゆる試み (ダウンロード、そのディレクトリへの変更、ディレクトリ内で何か影響するものなど) を拒否する。 このオプションはとても単純なので、本格的なアクセス制御に用いるべきではない。 そのような場合には、まず先にファイルシステムのアクセス制御を用いること。 しかしながら、ある種の仮想ユーザの設定には便利である。

deny_file で指定した文字列を含むか、deny_file で指定した 正規表現にマッチする名前を持つものへのアクセスが拒否される。 vsftpd の正規表現のコードは単純な実装で、完全な正規表現の部分集合 になっているので、注意すること。 よって、このオプションの使用するときは、注意深く、 徹底的にテストする必要がある。 また、あらゆる重要なセキュリティティーポリシーに対し、 ファイルシステムのパーミッションを使用することを、 その偉大な信頼性から推奨する。 例: deny_file={*.mp3,*.mov,.private}

デフォルト: (なし)

secure_email_list_enable を設定したときの代替ファイルを設定する。

デフォルト: /etc/vsftpd.email_passwords

anonymous FTP を取り扱うときに使用するユーザのユーザ名を指定する。 指定したユーザのホームディレクトリが anonymous FTP のルートとして 使用される。

デフォルト: ftp

接続が最初に来たときに vsftpd が表示する挨拶メッセージを指定する。

デフォルト: (なし。vsftpd のデフォルトのバナーが表示される)

guest ログインの説明については、真偽値設定の guest_enable を参照して欲しい。 このオプションでは、guest ユーザが実際に割り当てられるユーザ名を指定する。

デフォルト: ftp

ディレクトリリストから隠すべきファイル名(やディレクトリ名) のパターンを指定する。 ファイル / ディレクトリは隠されているが、 ファイル名を知っているクライアントからは自由にアクセス可能である。 hide_file で指定した文字列を含むか、hide_file で指定した 正規表現にマッチする名前を持つものが隠される。 vsftpd の正規表現のコードは単純な実装で、完全な正規表現の部分集合 になっているので、注意すること。 例: hide_file={*.mp3,.hidden,hide*,h?}

デフォルト: (なし)

スタンドアロンモードの場合に、listen するアドレスを指定する。 デフォルトは、すべてのローカルインタフェースである。 IP アドレスを(数値で)指定すること。

デフォルト: (なし)

listen_address と同様だが、(listen_ipv6 が指定された場合に使用される) IPv6 での接続を待つアドレスを指定する。 フォーマットは、標準的な IPv6 アドレスである。

デフォルト: (なし)

ローカルログイン(すなわち、非 anonymous ログイン)の後に 変更するディレクトリを指定する。 ディレクトリ変更の失敗は、静かに無視する。

デフォルト: (なし)

ユーザが新たなディレクトリに入った場合に 探すファイルの名前を指定する。 中身がリモートのユーザに表示される。 このオプションは dirmessage_enable オプションが有効の場合にのみ意味を持つ。

デフォルト: .message

特権を必要としなくなった場合に vsftpd が使用するユーザの ユーザ名を指定する。 注意: nobody を使うのではなく、専用のユーザを使用すべきである。 多くのマシンでは、どちらかと言えば、むしろ多くの重要な事に
nobody ユーザが使われる。

デフォルト: nobody

vsftpd が使用する PAM サービス名を指定する。

デフォルト: ftp

PASV コマンドへの応答において、vsftpd が伝える IP アドレスを指定する。 IP アドレスを(数値で)指定すること。

デフォルト: (なし。接続されたソケットからアドレスが決められる)

このオプションは空のディレクトリの名前にすべきである。 また、そのディレクトリは ftp ユーザが書き込めてはいけない。 ここで指定するディレクトリは、 ファイルシステムへのアクセスが必要ないときに使用する、 安全な chroot() jail に使われる。

デフォルト: /usr/share/empty

この強力なオプションによって、 マニュアルページにあるいかなる設定オプションも ユーザーごとに上書きすることができる。 使い方は簡単で、以下の例で示す。 user_config_dir/etc/vsftpd_userr_conf に設定し、ユーザ "chris" がログインした場合、 そのセッションの間 /etc/vsftpd_user_conf/chris というファイルにある設定が適用される。 このファイルの書式は、 このマニュアルページにかかれているものと同じである。 ただし、すべての設定がユーザーごとに効果があるわけではないことに 注意してほしい。 例えば、多くの設定はユーザーのセッションが開始される前に使用される。 設定例の中で、ユーザーごとの動作に影響しないものには、 listen_address, banner_file, max_per_ip, max_clients, xferlog_file などが含まれる。

デフォルト: (なし)

このオプションは、仮想ユーザーと組み合わせるときに便利である。 テンプレートを元に、各仮想ユーザーのホームディレクトリを自動的に生成するのに使用する。 例えば、 guest_username によって実ユーザーのホームディレクトリが /home/virtual/$USER に設定されていて、 user_sub_token$USER に設定されていれば、仮想ユーザー fred がログインすると、最終的に (通常は chroot() されて) /home/virtual/fred ディレクトリに移動される。 このオプションは、 local_rootuser_sub_token を含んでいる場合にも効果がある。

デフォルト: (なし)

userlist_enable オプションが有効な場合に読み込まれるファイルの ファイル名を指定する。

デフォルト: /etc/vsftpd.user_list

vsftpd スタイルの転送ログを記録するファイルのファイル名を指定する。 xferlog_enable が設定されていて、かつ xferlog_std_format が設定されていない場合にのみ、このログは記録される。 もしくは dual_log_enable オプションを設定すれば記録される。 もう一つさらに複雑なこととして、 syslog_enable を設定した場合にはファイルには出力されず、出力は システムログへと送られる。

デフォルト: /var/log/vsftpd.log

wu-ftpd スタイルの転送ログを記録するファイルのファイル名を指定する。 転送ログは xferlog_enablexferlog_std_format が設定されている場合にのみ記録される。 もしくは dual_log_enable オプションを設定すれば記録される。

デフォルト: /var/log/xfer.log

著者

chris@scary.beasts.org