ftpaccess(5) 名称 ftpaccess - ftpd コンフィグレーションファイル 解説 ftpaccessファイルはftpd(1)の動作の設定をするものである Access Capability autogroup [ ...] 匿名ユーザーが任意ののメンバーである場合、ftpサーバーは にsetegid()する。これはgroup-and-owner-read-onlyな ファイルやディレクトリへのアクセスを匿名ユーザの一部のクラスに 対して許可する。は/etc/groupにおける有効なグループ である。(getgrent(2)ライブラリルーチンが使うメカニズムはいつもそう。) class [ ...] で指定される形式のソースアドレスによりユーザーの を定義する。には複数のメンバーを定義することがで きる。クラスの追加のメンバーをリストする複数の"class"コマンド を置くことができる。複数の"class"コマンドが実行中のセッション に適合する場合、アクセスファイルの一番初めに載っているものが使 われる。ホストに対して有効なクラスを定義できない場合にはアクセ スは拒否される。はカンマ区切りのリストで、"real"、 "guest"、"anonymous"のどれかからなる。"real"キーワードが含まれ る場合は、クラスは実アカウントにアクセスするためにFTPを使うユー ザーにマッチすることができる。また、"anonymous"キーワードが含 まれる場合は匿名FTPを使うユーザにマッチすることができる。 "guest"キーワードはゲストアクセスアカウント(詳しくは "guestgroup"を見よ)にマッチする。 はglobされたドメイン名またはIPアドレスである。また、 追加のアドレスglobが書いてあるファイルのスラッシュ('/')で始ま る名前やaddress:netmask、address/cidrの形式のものでもよい。 の前にエクスクラメーションマーク(!)がある場合は、そ のテストを否定する。たとえば、 class rmtuser real !*.example.com だったら、example.com ドメイン以外からの実ユーザを rmtuser ク ラスとして分類する。このオプションは気をつけて使うこと。各々の テストの結果はその行の他のテストと OR で効く。 deny にマッチするホストは常にアクセスを拒否される。 が表示される。は稼働中のネームサーバー がないサイトに対しアクセスすることを拒否する"!nameserverd"でも よい。追加のアドレスglobの書いてあるファイルのスラッシュ('/') で始まるファイル名やaddress:netmask、address/cidrの形式でもよ い。 guestgroup [ ...] guestuser [ ...] realgroup [ ...] realuser [ ...] guestgroupに対し、実ユーザが任意ののメンバーの場合 は、そのセッションは匿名FTPとまったく同じように設定される。言 い替えれば、chroot()をし、ユーザーはUSERとPASSコマンドを使うこ とは許されなくなる。は/etc/groupの有効なグループで ある。(getgrent(2)ライブラリルーチンが使うメカニズムはいつもそ う。) ユーザーのホームディレクトリは、匿名FTPの場合とまったく同じよ うに、適切に設定されるべきである。パスワードエントリーのホーム ディレクトリフィールドは2つのディレクトリに分離される。1つめの フィールドはchroot(2)呼出時の引数となるルートディレクトリであ る。2つめは(新しい)ルートディレクトリからの相対的なユーザのホー ムディレクトリである。2つのフィールドは"/./"で区切られる。 例: /etc/passwdの実エントリ: guest1::100:92:Guest Accont:/ftp/./incoming:/etc/ftponly guest1がログインすると、ftpサーバーはchroot("/ftp")を実行し、 続いてchdir("/incoming")を実行する。ちょうど、匿名FTPユーザが そうなるのと同じように、ゲストユーザは/ftp(guest1からはルート ディレクトリのように見える)の下のディレクトリ構造にのみアクセ スできる。 グループ名は名前もしくは数値のGIDで指定する。数値のGIDを使う 場合は、数字の前に'%'を書くこと。範囲で与えることもできる。ア スタリスクはすべてのグループを表すのに使う。 guestuserはユーザー名もしくは数値のUIDを使うこと以外は、 guestgroupと同様に動作をする。 realuserとrealgroupはguestuserやguestgroupと同じ構文となるが、 その効果は逆である。これらは、リモートユーザーがguestとみなさ れるような場合に実ユーザとしてのアクセスを許す。 例: guestuser * realgroup admin このような設定では、匿名でないすべてのユーザがゲストとして扱わ れ、実ユーザアクセスが特別に許されているadminグループだけが唯 一の例外となる。 nice [] リモートユーザーがで指定されたメンバーの場合に、ftpdサー バープロセスのナイス値をで指定された値分だけ調整す る。の指定がないときは、ftpdサーバープロセスのナイス値 のデフォルトの調整値となる。ナイス値のデフォルトの調整値は、 ftpaccessファイルの中に、クラス毎のナイス値の指示子があるいか なるクラスにも属さないユーザのプロセスにのみ適用される。 defumask [] リモートユーザーがで指定された名前のクラスのメンバーの 場合は、デーモンにより作成されるファイルに適用されるumaskを設 定する。が指定されていない場合は、指定のないクラスに対 してデフォルトとしてumaskを使う。 tcpwindow [] データコネクションのTCPウィンドウを設定する。これはネットワー クのトラフィックを制御するのに使う。例えば、遅いPPPのダイアル イン接続ではスループットをあげるためにTCPウィンドウを小さくす る必要があるだろう。これがどんな効果があるのかわからないなら、 この設定をいじるべきではない。 keepalive データソケットに対し、TCP SO_KEEPALIVE オプションを設定する。 これは、ネットワークの切断を制御するのに使われる。yes はこれを 設定する。no はシステムのデフォルト(普通はオフ)となる。あなた はたぶんこれを設定したくなる。 timeout accept timeout connect timeout data timeout idle timeout maxidle timeout RFC931 様々なタイムアウトを設定する。 accept (デフォルトは120秒): デーモンが incomming(PASV) のデー タコネクションをどれだけ待つか。 connect (デフォルトは120秒): デーモンが outgoing(PORT) のデー タコネクションを確立しようとするのをどれだけ待つか。これは実際 の接続の試行に影響する。デーモンは完全にあきらめる前に、数回、 しばらくスリープしながら試行を繰り返す。 data (デフォルトは1200秒): デーモンがデータコネクションでの何ら かの活動をどれだけ待つか。これは長く設定すべきだ。なぜなら、リ モートクライアントは遅い回線しかないかも知れないし、クライアン トにとってキューにたまったほんのわずかなデータがあるかも知れな いからだ。 idle (デフォルトは900秒): デーモンが次のコマンドを受け付けるま でどれだけ待つか。デフォルトは、コマンドラインの -a オプション で上書きされることもある。このアクセス節は両方を上書きする。 maxidle (デフォルトは1200秒): SITE IDLE コマンドはリモートクラ イアントがアイドルのタイムアウトとしてより大きな値を確立するの を許す。これはクライアントが要求できる上限値を設定する。デフォ ルトはコマンドラインの -A オプションにより上書きされることもあ る。このアクセス節は両方を上書きする。 RFC931 (デフォルトは10秒): デーモンが RFC931(AUTH/ident) のや り取りに対して許す最大の時間。これをゼロ(0)に設定すると、この プロトコルをデーモンが使うのをやめられる。RFC931 を通じて得ら れる情報は、システムログに記録され、実際にはいかなる認証にも使 われない。 file-limit [] [] 与えられたクラスに属するユーザーが転送してもよいデータファイル の数を制限する。制限はファイルのin、out、totalについて設定でき る。クラスの指定がない場合は、この制限は特定の制限がないクラス に対するデフォルトとなる。オプションのrawパラメータは、単にデー タファイルだけでなく全体のトラフィックに対する制限として適用す る。 data-limit [] [] 与えられたクラスに属するユーザーが転送してもよいデータの数を制 限する。制限はバイト数に関して、in、out、totalについて設定でき る。クラスの指定がない場合は、この制限は特定の制限がないクラス に対するデフォルトとなる。オプションのrawパラメータは、単にデー タファイルだけでなく全体のトラフィックに対する制限として適用す る。 limit-time {*|anonymous|guest} 1セッションにかかる時間を制限する。デフォルトは無制限。実ユー ザは制限されない。 guestserver [] どのホストが匿名またはゲストアクセスのために使われるかを制御す る。の指定がないときは、このサイトに対するすべてのゲ ストまたは匿名アクセスを拒否する。には1つ以上のホス トを指定できる。ゲストまたは匿名アクセスは指定のあるマシンにの み許される。アクセスが拒否された場合は、ユーザはリストされてい る1つめのを使うように頼まれるだろう limit の場合にからは人に制限し、ユーザがアクセスを 拒絶された場合にはを表示する。この制限のチェック はログインしたときにのみ行なわれる。複数の"limit"コマンドが現 在のセッションに適用された場合は、一番はじめの適用可能な "limit"が適用される。有効な制限が定義できない場合や制限が-1に 指定されている場合は制限なしと同じである。はUUCP L.sys の中のtimesと同じ書式を使う。 noretrieve [absolute|relative] [class=] ... [-] ... これらのファイルの検索可能性を常時拒絶する。ファイルが絶対パス で指定されている場合(つまり'/'ではじまっている場合)そのファイ ルだけがgetできないようになる。そうでない場合は、ファイル名に マッチするすべてのファイルの転送を拒絶する。例えば: noretrieve /etc/passwd core のようにすると、/etc以外にあるpasswdというファイルは転送できる が、/etc/passwdはgetできない。他方、coreというファイルはどこに あってもgetできない。 ディレクトリが指定されると、その名前のディレクトリの中のすべて のファイルとサブディレクトリにgetできないという印がつく。 はファイルglobとして指定することもできる。例えば: noretrieve /etc /home*/.htaccess のようにすると、/etc とそのあらゆるサブディレクトリの中のどの ファイルも検索できなくなる。同様に、'.htaccess' という名前で、 /home ディレクトリの下のあらゆる場所にあるファイルは検索できな くなる。 オプションの1つめのパラメータは、chrootした現在の環境に置いて 絶対パスとして、あるいは相対パスとして解釈されることを選択する。 デフォルトはスラッシュではじまる名前を絶対パスとして解釈する。 検索不可の制限は特定のクラスのメンバーに対して設定できる。いか なるclass=が指定されても、現在のユーザが与えられた任意のクラス のメンバーの場合には、指定のファイルは検索できない。 allow-retrieve [absolute|relative] [class=]... [-] ... noretrieveで拒否されたファイルの検索を許す。 loginfails 回、ログインを失敗すると"repeated login failures"とい うメッセージをログに残し、FTPコネクションを終了する。デフォル トは5。 private ユーザーがログインした後、SITE GROUPとSITE GPASSコマンドは、拡 張されたアクセスグループ関連づけられたパスワードを特定するため に使われる。グループ名とパスワードが正しい場合は、ユーザは (setegid()を通じて)グループアクセスファイル/etc/ftpgroupsで指 定されたグループのメンバーとなる。 グループアクセスファイルのフォーマットは: access_group_name:encrypted_password:real_group_name ここで、access_group_nameは適当な(アルファベット、数字、句読点 からなる)文字列。encrypted_passwdはcrypt(3)で暗号化されたパス ワードで、/etc/passwdで使っているものと同じ。real_group_nameは /etc/groupに記述のある有効なグループの名前である。 注意:このオプションを匿名ユーザに対して有効にするには、ftpサー バーは/etc/groupを常に開いてあり、グループアクセスファイルがメ モリにロードされていなければならない。これは、(1)ftpサーバーは オープンしてある追加のファイルディスクリプタがあり、(2)必要な パスワードとSITE GROUP経由のユーザに対して保証されている特権ア クセスがFTPセッションの間中静的である、ということである。たっ たいま、アクセスグループやパスワードを変更する差し迫った必要が ある場合には、稼働中のFTPサーバーをすべて停止するべきだ。 Informational Capabilities greeting full|brief|terse greeting text リモートユーザがログインする前にどれだけの情報を提供するかを制 御できる。'greeting full'はデフォルトで、ホスト名やデーモンの バージョンを示す。'greeting brief'はホスト名を示す。'greeting terse'は単に"FTP server ready"とだけ表示する。fullがデフォルト だが、briefを推奨する。 'text' の形式は、あなたの望むグリーティングメッセージを指定で きる。 は任意の文字列で、空白(space やタブの連続)は1 つのスペースに変換される。 banner ユーザがusername/passwordを入力する前にバナーが表示されること 以外はmessageコマンドと同様に動作する。は実システムルー トからの相対パスで、匿名FTPのベースディレクトリからのものでは ない。 警告: このコマンドを使うと、non-compliantなFTPクライアントがFTPサー バーを利用することを完全に防ぐことができる。すべてのクライアン トが複数行を扱えるわけではない。 hostname ftpサーバーのデフォルトのホスト名を定義する。この文字列は、グ リーティングメッセージのときと %L マジッククッキーが使われる度 にプリントされる。バーチャルサーバのホスト名はこの値を上書きす る。指定がなければ、デフォルトはローカルマシンのホスト名が使わ れる。 email ftpアーカイブの管理者のメールアドレスを定義する。この文字列は %E マジッククッキーが使われる度にプリントされる message { ...}} ログインした時やカレントディレクトリを移動した時にユーザに対し てftpdがファイルの目次を表示するというようなファイルのを 定義する。パラメータは"LOGIN"と"CWD="をとる。 が"CWD="の場合、はお知らせをトリガするような新しいデ フォルトのディレクトリを指定する。 オプションはメッセージが特定のクラスのメンバーに対して だけ表示されるようにする。1つ以上のクラスを指定できる。 readmeファイルの中では、以下にあげるような特別の文字列のcookie をftpサーバーに置き換えさせるような"magic cookies"がある。 %T 現地時間(Thu Nov 15 17:12:42 1990の形式) %F カレントディレクトリの空き容量(kbytes) (すべてのシステムで使えるわけではない) %C カレントディレクトリ %E ftpaccessで定義された管理者のメールアドレス %R リモートホスト名 %L ローカルホスト名 %u RFC931認証により決まるユーザー名 %U ログイン時に与えられたユーザー名 %M このクラスの許される最大のユーザー数 %N このクラスの現在のユーザー数 %B アロケートされたディスクブロックの絶対的な制限 %b ディスクブロックの望まれる制限 %Q 現在のブロックカウント %I アロケートされたinodeの最大数(+1) %i 望ましいinodeの制限 %q 現在のアロケートされたinodeの数 %H ディスク超過の時間制限 %h ファイル超過の時間制限 ratios: %xu アップロードされたバイト数 %xd ダウンロードされたバイト数 %xR アップロード/ダウンロード の比(1:n) %xc クレジットバイト %xT 制限時間(分) %xE ログインからの経過時間(分) %xL 残り時間 %xU アップロードの制限値 %xD ダウンロードの制限値 メッセージはユーザにうっとうしがらせないように1度だけ表示され るようにする。メッセージが匿名FTPユーザによってトリガされた時 はは匿名FTPディレクトリツリーのベースからの相対パスにな るので注意。 readme { {}} ログイン時や、カレントディレクトリを変更した時に、ユーザに対し てftpdが、ファイルがあるとか、いついつに変更されたとかをしらせ るためのファイルのを定義する。パラメータは"LOGIN" または"CWD="という値をとる。が"CWD="の場合、 はお知らせをトリガするような新しいデフォルトのディレクト リを指定する。メッセージはユーザをうっとうしがらせないために1 回だけ表示される。READMEメッセージが匿名FTPユーザによってトリ ガされた場合は、は匿名FTPのディレクトリツリーのベースか らの相対パスになることに注意。 オプションは特定のクラスに属するメンバーにだけメッセー ジを表示したい場合に使える。1つ以上のクラスを指定できる。 Logging Capabilities log command ユーザの個々のコマンドのログとりを可能にする。は、 "anonymous"、"guest"、"real"の中のコンマ区切りリストである。 "real"キーワードが含まれる場合はログとりはユーザーが実アカウン トにFTPでアクセスしているものに対して行なわれる。"anonymous"キー ワードを含む場合は、ユーザーが匿名FTPを使っているのに対して行 なわれる。"guest"キーワードはゲストアクセスアカウントにマッチ する。(詳しくは"guestgroup"を見よ) log transfers 実ユーザまたは匿名ユーザによるファイル転送のログとりを可能にす る。サーバー*へ*の転送(incoming)のログとりはサーバー*から* の転送(outbound)のものと分離可能である。は "anonymous"、"guest"、"real"からなるコンマ区切りリストである。 "real"キーワードが含まれる場合はログとりはユーザーが実アカウン トにFTPでアクセスしているものに対して行なわれる。"anonymous"キー ワードを含む場合は、ユーザーが匿名FTPを使っているのに対して行 なわれる。"guest"キーワードはゲストアクセスアカウントにマッチ する(詳しくは"guestgroup"を見よ)。は2つのキーワー ド"incound"と"outbound"からなるコンマ区切りリストで、サーバー へ送るのとサーバーから送るのを別々のファイルへログとりできる。 log security セキュリティ規則(noretrive, .notar, ...)への妨害のログとりを実 ユーザ、ゲストユーザ、匿名ユーザについて可能にする。 は"anonymous"、"guest"、"real"のカンマ区切りリストである。 "real"キーワードが含まれる場合はログとりはユーザーが実アカウン トにFTPでアクセスしているものに対して行なわれる。"anonymous"キー ワードを含む場合は、ユーザーが匿名FTPを使っているのに対して行 なわれる。"guest"キーワードはゲストアクセスアカウントにマッチ する(詳しくは"guestgroup"を見よ)。 log syslog log syslog+xferlog incomingとoutgoingの転送について、ログのメッセージをsyslogへリ ダイレクトする。このオプションがない場合、メッセージはxferlog へ書かれる。 syslog+xferlog はログメッセージをシステムログと xferlog の両方 へ送る。 Upload/Download ratios これらのコマンドが機能するようにするためには、WU-FTPD を --enable-ratios オプションをつけてコンパイルしなければならない。 ul-dl-rate [ ...] Upload/Downloadの比(1:rate)を指定する。ftp ユーザーが1バイトアッ プロードしたら、その人はバイト受け取る。デフォルトは比率 の設定なし。 dl-free [ ...] というファイルは自由に(ratio を無視して)ダウンロー ドできる。 dl-free-dir [ ...] のディレクトリそのサブディレクトリの中のすべてのファ イルは、自由に(ratio を無視して)ダウンロードできる。dl-free と dl-free-dir の両方とも、システムのルートからの相対パスであって、 chroot した環境のものではない。 Miscellaneous Capabilities alias ディレクトリに対し、というエイリアスを定義する。論理ディ レクトリの考え方を加えるために使われる。 例えば: alias rfc: /pub/doc/rfc というような記述は、ユーザに対して"cd rfc:"というコマンドによ りどんなディレクトリからでも/pub/doc/rfcにアクセスすることを許 す。エイリアスは cd コマンドに対してだけ適用される。 cdpath cdpathにエントリを定義する。これはディレクトリ変更時のサーチパ スを定義する 例えば: cdpath /pub/packages cdpath /.aliases というような記述は、/pub/packagesまたは/.aliasesの下へどのディ レクトリからでも直接移動することを許す。サーチパスはftpaccess ファイルで現れた順番に定義される。 ユーザが次のコマンド: cd foo を実行した場合、次のような順序でディレクトリが検索される。 ./foo an alias called "foo" /pub/packages/foo /.aliases/foo cdpathはcdコマンドに対してだけ有効である。エイリアスの数がとて も多いときは、ユーザが便利なようにすべてのエリアへのリンクとし てエイリアスディレクトリを定義したくなるだろう。 compress [ ...] tar [ ...] にマッチする任意のクラスに対してcompressまたはtarを 使えるようにする。実際の変換はFTPLIB/ftpconversionsという外部 ファイルで定義する。 shutdown で指定されるようなファイルがある場合、サーバーはサーバー がシャットダウンする予定があるかどうかを確かめるためにそのファ イルをチェックする。シャットダウンの予定がある場合は、ユーザに 通知され、シャットダウン前の特定の時刻以降は新たな接続は拒否し、 現在のコネクションはシャットダウン前の特定の時刻に落す。 で指し示されるファイルは次の構造になっている: 任意の年 > 1970 0-11 <-----------注意! 0-23 0-59 はそれぞれ新しい接続を拒否するのと 現存する接続を切断するシャットダウン時刻前のオフセットでHHMMの 形式である。 は任意のメッセージに対する通常の規則("message"を見よ)に したがっており、さらに次の追加のmagic cookieが利用可能である。 %s システム停止時刻 %r 新たな接続を拒否する時刻 %d 今ある接続を切断する時刻 すべての時刻のフォーマットは: ddd MMM DD hh:mm:ss YYYY である。 "shutdown"コマンドは設定ファイル中にただ1つしかあってはならな い。 外部プログラムftpshut(8)はこのファイルを生成するプロセスを自動 でやる。 daemonaddress
値が設定されていない場合はサーバーはすべてのIPアドレスからのコ ネクションを受け付ける。そうでない場合は指定のIPアドレスからの み受け付ける。 この節を使うことは推奨しない。これはただ1つのサイトの必要性に より追加された。これは仮想ホスティングを完全に破壊するだろう。 また、将来のバージョンで文法が変わるかもしれない。 virtual
仮想ftpサーバーを可能にする。
は仮想サーバーのIPアドレ スである。第2引数はが、「この仮想サーバのファイルシステ ムの"root"へのpath」、「"banner"はこの仮想サーバへ繋げた時にユー ザーへ提示する」、「"logfile"はこの仮想サーバでの転送を記録す る」のどれを表すかを指定する。"logfile" が設定されていないとき は、デフォルトのログファイルが使われる。その他のすべてのメッセー ジファイルとパーミッションはこのファイル中の他の設定と同じよう にすべての仮想サーバーへ適用する。 注意:あなたのOSがこの機能をサポートしていないことがある。 BSD/OS、Solaris2.X、Linuxでテストしてある。
はIPアドレスでなくホスト名で設定することもできる。こ れは激しくおすすめしない。FTPセッションが起動した時にDNSが動い ていないと、ホスト名があわなくなってしまうからだ。 virtual
グリーティングメッセージやSTATusコマンドで表示するホスト名また はメッセージファイルとHELPコマンドのときに表示するメールアドレ スを与えられたに設定する。 virtual
allow [ ...] virtual
deny [ ...] 通常、実ユーザーまたはゲストユーザーはゲストであるか仮想ルート へchrootしたのでない場合は仮想サーバーへログインは許されない。 "virtual allow"行上にリストされたユーザーはアクセスを許される。 すべてのユーザーはユーザー名として '*'を与えられることによりア クセスが許される。"virtual deny"節は"virtual allow"節よりあと に働き、全ユーザーを許可した場合に特定のユーザーだけ拒絶したい 時に使われる。 virtual
private 通常、匿名ユーザーは仮想サーバーへのログインが認められる。この オプションはこれを拒絶する。 virtual
passwd 仮想ドメインに対して、異なる passwd ファイルを使う。このオプショ ンを使うためには、デーモンは、--enable-passwd(または OTHER_PASSWD) オプションを指定してコンパイルされていなければならない。 virtual
shadow 仮想ドメインに対して、異なるシャドウ passwd ファイルを使う。こ のオプションを使うためには、デーモンは、--enable-passwd(または OTHER_PASSWD)オプションを指定してコンパイルされていなければな らない。 defaultserver deny [ ...] defaultserver allow [ ...] 通常、すべてのユーザーはデフォルト(仮想でない)FTPサーバーへの アクセスを許可されている。"defaultserver deny"を使うと特定のユー ザに対しこれが無効になる。全ユーザーのアクセスを拒絶する場合は '*'を与える。特定のユーザーは"defaultserver allow"を使うと許可 される。 defaultserver private 通常、匿名ユーザーはデフォルト(仮想でない)FTPサーバーへのアク セスが許可されている。この文により匿名アクセスを不許可にする。 virtual と defaultserver の allow, deny, そして private 節で、 どのユーザーがどのFTPサーバーへのアクセスが許されるかを制御す る手段を提供する。 passive address PASVコマンドへの応答として報告されたアドレスの制御を許可する。 にマッチするような任意のコントロールコネクションが、受動 データコネクション(PASV)が要求すると、アドレスが報 告される。 注意:これは実際にデーモンが受信しているアドレスを変更しない。 クライアントに対して報告するアドレスだけである。この機能により デーモンがIPアドレス付け変えファイアウォールの裏で正確に動作で きるようになる。 例えば: passive address 10.0.1.15 10.0.0.0/8 passive address 192.168.1.5 0.0.0.0/0 クラスAネットワーク10からのクライアントの接続は受動接続がIPア ドレス10.0.1.15であることをいい、一方、それ以外のすべては接続 が192.168.1.5で待ち受けることをいっている。 複数の受動アドレスは複雑な扱いを指定されているか複数のゲートウェ イネットワークであろう。 passive ports 受動データコネクションに使うTCPポートナンバーの制御を許す。コ ントロールコネクションがにマッチする場合、の 間にあるポートはデーモンが待ち受けるためにランダムに選択される。 この機能はファイヤウォールが、リモートクライアントが保護された ネットワークへ接続するのに使えるようにポートを制限するのを許す。 はドットで区切った記法のIPアドレスにスラッシュと(マシン のアドレスに対する)ネットワークのアドレスを表現する一番左のビッ トの番号を続ける形式の簡易記法である。例えば、予約されたクラス Aネットワーク10を使っているなら、255.0.0.0というネットマスクの 代わりに/8というCIDRを使い、10.0.0.0/8とネットワークを表現する。 pasv-allow [ ...] port-allow [ ...] 通常、デーモンはコントロールコネクションのアドレスと違うアドレ スを指定した PORT コマンドを許可しない。そして、別のアドレスか らの PASV 接続を許さない。 port-allow 節は PORT コマンドについて、ユーザの特定のクラスが 与えるアドレスのリストを提供する。これらのアドレスはコントロー ルコネクションのクライアント側の IP アドレスとマッチしなくても 許される。 pasv-allow 節は、ユーザの特定のクラスがデータコネクションを張 るアドレスのリストを提供する。これらのアドレスはコントロールコ ネクションのクライアント側の IP アドレスとマッチしなくても許さ れる。 lslong [ ...] lsshort [ ...] lsplain [ ...] "lslong"、"lsshort"、"lsplain"節はディレクトリリストを生成する ために使われるコマンドとオプションを指定することを許す。オプショ ンはスペースを含むことができないこと、これらの節のデフォルトは たいてい正しいこと、"lslong" 、"lsshort"、"lsplain"は本当に必 要な時だけ使うべきということに注意。 mailserver FTP デーモンに対してアップロードの通知を受け入れるメールサーバ の名称を指定する。複数のメールサーバがリストされるだろう。デー モンは、どれかがメッセージを受け付けるまで、順番に、アップロー ドの通知を配送しようとするだろう。メールサーバが指定されない場 合は、localhost が使われる。このオプションはだれかが匿名アップ ロードを通知される場合のみ意味がある(incmail 参照)。 incmail virtual
incmail defaulserver incmail 匿名アップロードを通知されるE-Mail アドレスを指定する。複数の アドレスを指定でき、それぞれが通知を受け取る。何も指定されてい なければ、通知は送られない。 アドレスが仮想ホストに対して指定される場合、それらのアドレスは そのホストでの匿名アップロードの通知を受け取るだろう。他方、通 知は、グローバルアドレスに対して送られるだろう。 defaultserver アドレスは FTP セッションが仮想ホストの1つを使っ ていない場合にのみ適用される。この方法では、デフォルト匿名エリ アに対する通知を受け取ることができるが、それ自身の通知がない仮 想ホスト宛の通知を見ることができない。 mailfrom virtual
mailfrom defaultserver mailfrom 匿名アップロードの通知について送り主の e-mail アドレスを指定す る。1つのアドレスを指定できる。mailfrom がなければ、デフォルト メールボックス名の 'wu-ftpd' から e-mail が送られる。受取り手 が通知に対して返事をしようとしないかどうか、ダウンストリームメー ル問題がバウンスを生成したりしないかどうかという問題を避けるた め、mailfrom のアドレスが配送可能かどうかを確認すべきだ。 Permission Capabilities chmod delete overwrite rename umask 指定の機能を許すかどうか。デフォルトはすべてのユーザに許可する。 は"anonymous"、"guest"、"real"、"class=" のどれかか らなるコンマ区切りリストである。"class="が現れたら、その後ろに はクラス名を続けなければいけない。"class="が現れたら、 による制限はそのクラスのユーザーに対してのみ適用され る。 passwd-check () サーバーにより行なわれる匿名ftpのパスワードチェックのレベルと 強制の程度を定義する。 none パスワードチェックをしない trivial パスワードに'@'が入っているか rfc822 パスワードがrfc822の形式になっているか warn ユーザーに警告するがログインは許す enforce ユーザーに警告しログアウトさせる deny-email 引数に与えられたメールアドレスを不正とみなす。passwd-checkが enforceに設定されていれば、匿名ユーザーはパスワードとしてこの アドレスを与えたユーザはログインできない。この場合、ユーザーが お馬鹿なWWWブラウザがつかうIE?0User@やmozilla@のようなニセのア ドレスを持つのを止めることができる。(これにより、ユーザーがWWW ブラウザをftpに使うのを止めさせられるわけではない。ブラウザを 正しく設定させられるだけだ。)1行には1つのアドレスだけだが、望 むだけ"deny-email"アドレスを書くことができる。 path-filter { ...} のユーザに対し、"path-filter"はファイル名でありうる かまたはありえないものを制御するような正規表現を定義する。複数 の許可しない正規表現がありうる。ファイル名が正規表現で表される 基準に適合しないような不正なものの場合、がユーザーに対し 表示される。例えば: path-filter anonymous /etc/pathmsg ^[-A-Za-z0-9._]*$ ^\. ^- と指定されていると、匿名ユーザに対しすべてのアップロードファイ ル名はA-Z、a-z、0-9、と"._-"という文字だけからなり"."や"-"で始 まらないものでなければいけない。ファイル名が不正であればユーザー には/etc/pathmsgが表示される。 upload [absolute|relative] [class=]... [-] ["dirs"|"nodirs"] [] アップロードすることを許可/不許可するで表されるディ レクトリを定義する。 アップロードが許されている場合、すべての新しく作られるファイル はの所有で、にしたがって設定されたパミッ ションを持つだろう。また、存在していて上書きされるファイルは、 そのもともとの所有権とパミッションを保持するだろう。 ディレクトリはベストマッチの原則でマッチする。 例えば: upload /var/ftp * no upload /var/ftp /incoming yes ftp daemon 0666 upload /var/ftp /incoming/gifs yes jlc guest 0600 nodirs というエントリがあると、/incomingと/incoming/gifsにだけアップ ロードが許されている。/incomingへアップロードされたファイルは ftp/daemonの所有で0666のパミッションを持つ。/incoming/gifsにアッ プロードされたファイルはjlc/guestの所有で0600のパミッションを 持つ。はユーザー"ftp"のパスワードデータベースにおけ るホームディレクトリに一致していなければいけない。 オプションの"dirs"と"nodirs"キーワードは新たなサブディレクトリ をmkdirコマンドで作成することを許可/不許可することを指定する。 "upload"コマンドが使われた場合、デフォルトではディレクトリの作 成は許可される。デフォルトでオフにするには、このファイルの中で 最初に現れる"upload"コマンドで、ユーザー、グループ、モードを指 定し、続いて"nodirs"キーワードをあたえればよい。 ディレクトリが許されている場合は、オプションのにより新 しく作られるディレクトリのパミッションが決定される。省 略すると、パミッションはから推定し、さらにも省略さ れている時は0777となる。 "upload"キーワードはとなるホームディレクトリ (chroot()に与える引数)を持ったユーザにのみ適用する。 は"*"を指定すると任意のホームディレクトリにマッチする。 アップロードされるファイルやディレクトリがそれが作られたディレ クトリの所有権で作られるような場合は、はそれぞ れを"*"としてもよい。 オプションの第1パラメータはの名前がchrootした現在の 環境から絶対パスとして、または相対パスとして解釈するかどうかを 選択する。デフォルトはを絶対パスとして解釈する。 いくつかの'class='の制約を指定できる。1つでも設定さ れていると、この"upload"節だけがカレントユーザがそのクラスの一 つのメンバーであれば影響をおよぼす。 ファイルのアップロードを許可するようなサーバの設定の仕方に関す る完全な議論に関しては upload.configuration.HOWTO を読むこと。 throughput リモートホスト名またはリモートIPアドレスがコンマ区切り形式の に一致する場合、ダウンロード時の転送スループッ トがに制限されるような以下の に一致するサブディレクトリにあるファイルを、コン マ区切り形式のにより定義する。 エントリはベストマッチを原則にしてマッチする。 例えば: throuput /e/ftp * * oo - * throuput /e/ftp /sw* * 1024 0.5 * throuput /e/ftp /sw* README oo - * throuput /e/ftp /sw* * oo - *.foo.com この設定では、最大スループットをデフォルトに設定している。ただ し、/e/ftp/sw/以下のREADMEという名前でないファイルについては 1024bytes/sでダウンロードするように制限している。唯一の例外は、 foo.comというドメインに属するリモートホストで、常に最大スルー プットとなる。リモートホストが/e/ftp/sw/以下のファイルを検索す る度に、マッチしたエントリーラインのbpsはファクター倍される。 ここでのファクターは0.5である。したがって、リモートクライアン トがそこにある2つめのファイルを検索した時は、そのファイルは 512bytes/sで提供され、3回目は254bytes/s、4回目は128bytes/sなど となる。 "bytes-per-second"フィールドでの"oo"という文字列は、スループッ トに制限をしないという意味である。倍数が1.0または"-"となってい る時は、転送がうまくいった後、スループットを変更しないというこ とである。 はユーザー"ftp"のパスワードデータベースにおけるホー ムディレクトリと一致していなければいけないことに注意。 "throughput"キーワードはという(chroot()の引数となる) ホームディレクトリをもったユーザに対してのみ適用される。 anonymous-root [] は匿名ユーザにとってのchroot()のパスに指定する。 "anonymous-root"が一致しなければ、'ftp'ユーザのホームディレク トリをパースする古い方法が使われる。が指定されていなけ れば、ほかに"anonymous-root"が指定されていない匿名ユーザに対す るルートディレクリとなる。複数のクラスに対してこの行をおくこと ができる。"anonymous-root"がユーザに対して選択された場合、'ftp' ユーザの/etc/passwdファイルに書いてあるホームディレ クトリが始めのディレクトリを決めるのに使われ、システムの /etc/passwdに書かれている'ftp'ユーザのホームディレクトリは使わ れない。 例えば: anonymous-root /home/ftp anonymous-root /home/localftp localnet これにより、すべての匿名ユーザは、/home/ftpにchroot()し、'ftp' ユーザが/home/ftp/etc/passwdに存在する場合は、初期カレントディ レクトリはそのホームディレクトリとなる。しかし、localnetクラス の匿名ユーザーは/home/localftpへchroot()し、初期カレントディレ クトリは/home/localftp/etc/passwdで指定される'ftp'ユーザーのホー ムディレクトリとなる。 guest-root [] はゲストユーザのためのchroot()するパスを指定する。 "guest-root"がマッチしないときは、ユーザのホームディレクトリを パースする古い方法が使われる。が指定されていないと きは、これが他の"guest-root"の指定にマッチしないゲストユーザの ルートディレクトリになる。複数の"uid-range"をこの行に与えるこ とができる。"guest-root"がユーザに対して選択された場合、 /etc/passwdファイルに指定されるユーザのホームディレ クトリが初期ディレクトリとなり、システムの/etc/passwdに指定さ れるものがホームディレクトリとなるわけではない。 は数値のUIDで指定する。範囲は、下側と上側の境界(両 端を含む)をダッシュ("-")で区切って与える。下側の境界を省略する と「その値までのすべて」、上側の境界を省略すると「その値から先」 の意味である。 例えば: guest-root /home/users guest-root /home/staff %100-999 sally guest-root /home/users/frank/ftp frank この設定は、すべてのユーザが/home/usersへchroot()し、 /home/users/etc/passwdで指定されたホームディレクトリからスター トする。100から999のユーザとsallyは/home/staffへchroot()し、カ レントディレクトリは/home/staff/etc/passwdのエントリからとられ る。ただ1人のユーザfrankは/home/users/owner/ftpへchroot()し、 カレントディレクトリは/home/users/owner/ftp/etc/passwdのこの人 のエントリからとられる。 "anonymous-root"と"guest-root"は順番が重要だ。ユーザが複数の節 にマッチする場合、最初のものが適用される。 がない節は例外で、他の節がマッチしない時にだけ適用される。 deny-uid [...] deny-gid [...] allow-uid [...] allow-gid [...] これらの節は、ftpサーバーへアクセスするのを拒否するUIDやGIDの 値の指定をする。"allow-uid"と"allow-gid"は他方で拒否された uid/gidに対しアクセスを許可するようにできる。これらのチェック は、他のすべての前に行なう。拒否は許可の前にチェックされる。デ フォルトはアクセス許可である。多くの場合、これによって、 /etc/ftpusersファイルの必要性はなくなる。例えば: deny-gid %-99 %65535 deny-uid %-99 %65535 allow-gid ftp allow-uid ftp となっていると、ftpアクセスはLinux boxにおける匿名ftpのユーザ・ グループ以外のすべての特権があるユーザやグループに対して拒否し する。多くの場合、/etc/ftpusersファイルは必要ない。このファイ ルがまだあるのは、/etc/ftpaccessを変えることを望まない時、それ が使われることに対応するためである。 ftpaccessファイルを通じて、単独のUIDまたはGIDが許されるところ はどこでも、名前か番号のどっちかが使われる。数字を使うには、そ の前に'%'をおく。範囲が許されるような場所では、範囲の前に'%'を おく。 restricted-uid [...] restricted-gid [...] unrestricted-uid [...] unrestricted-gid [...] これらの節は実ユーザまたはゲストユーザがFTPサイトのその人のホー ムディレクトリの外側へのアクセスを許可するかどうかを決める。こ れらが"guestgroup"と"guestuser"を使うのを置き換えるわけではな い。そのかわり、ゲストの操作を補うためにこれらを使う。 "unrestricted-uid"と"unrestricted-gid"の節は、制限されたユーザー がその人のホームディレクトリの外側にアクセスするのを許すのにも 使える。 これらの節の使用例次のような感じに使える。ユーザー dick はホー ムディレクトリが /home/dick、jane は /home/jane として: guest-root /home dick jane restricted-uid dick jane dickとjaneは/homeへchroot()するが、彼らはホームディレクトリに 制限されているのでお互いのファイルにはアクセスできない。 この例のような状況では、可能であればどこでも、ftpの制限のみを 信用しようとしない。他のあらゆるftpアクセスルールと同様に、 ftpaccessの設定の操作を補強するためにディレクトリやファイルの パミッションを使う。 site-exec-max-lines [ ...] SITE EXECは伝統的にリモートホストへ送られるアウトプッとの行数 を制限する。この節は、この制限を許す。省略された場合は、制限は 20行である。制限を0にすると制限なしとみなす。制限を削除するの は十分な注意が必要である。この節がマッチするリモートユーザーの クラスにある場合は、その制限が使われる。また、この節が'*'クラ スに対するものは、クラス指定がない場合に使われる。例えば: site-exec-max-lines 200 remote site-exec-max-lines 0 local site-exec-max-lines 25 SITE EXEC(とSITE INDEX)のアウトプットに対する制限は、'remote' ユーザには200行、'local'ユーザには制限なし、その他の全ユーザは 25行に制限を設定する。 dns refuse_mismatch [override] リモートサイトに対する正引きと逆引きが一致しないときは FTP セッ ションを拒否する。(メッセージファイルのような)名前をつけたファ イルを表示し、ユーザに警告する。override オプションが指定され ているときは、文句を言ったあとに接続を許可する。 dns refuse_no_reverse [override] リモートサイトに対し、DNS の逆引きエントリが存在しないときは FTP セッションを拒否する。(メッセージファイルのような)名前をつ けたファイルを表示し、ユーザに警告する。override オプションが 指定されているときは、文句を言ったあとに接続を許可する。 dns resolveroptions [options] resolveroptions オプションは、ネームサーバオプションをひねられ るようにする。この行は、(先行する RES_removed とともに) resolver(3)の中で記述されている一連のフラグをとる。それぞれは、 前に + または - がつく。例えば: dns resolveroptions +aaonly -dnsrch この指定では、aaonly オプション(Authoritative answer のみ受け 入れる)が有効で、dnsrchオプション(ドメインパスの検索)が無効と なる。 ファイル FTPLIB/ftpaccess 参照 ftpd(8), umask(2), ftplog(5), ftpconversions(5), ftpshut(8)