Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名前

     ftpd — インターネットファイル転送プロトコルサーバ

書式

     ftpd [-AdDhlMPSU] [-T maxtimeout] [-t timeout] [-u mask]

説明

     ftpd はインターネットファイル転送プロトコルサーバプロセスである。 このサーバは TCP プロトコ
     ルを用いて、 “ftp” サービスの仕様で指定されたポートを listen する。 services(5) を参照するこ
     と。

     使用可能なオプションは以下の通りである:

     -A      匿名 ftp 接続、または /etc/ftpchroot にリストされたアカウントによる接続のみを許可す
             る。 他の接続は拒否される。

     -d      デバッグ情報が LOG_FTP を使って syslog に書き込まれる。

     -D      このオプションが設定されると、 ftpd は制御端末を切り離してデーモンとなり、FTP ポート
             への接続を受け付け、 接続を処理するために子プロセスを fork する。 この方式は ftpdinetd(8) から起動するよりオーバーヘッドが少ないため、 処理量の多いサーバで負荷を低減
             するのに役立つ。

     -h      サーバがパッシブ接続のために大きい番号の範囲にあるデータポートを使う。 この範囲は
             <netinet/in.h> にある IPPORT_HIFIRSTAUTO と IPPORT_HILASTAUTO で定義される。 OpenBSD
             では、この値はそれぞれ 49152 と 65535 に設定される。

     -l      成功または失敗した各 ftp(1) セッションを syslog の LOG_FTP ファシリティ (facility)
             を用いてログに記録する。 このオプションを 2 つ指定すると、 retrieve (get), store
             (put), append, delete, make directory, remove directory, rename の各操作、 およびそ
             れらの引き数として指定されたファイル名についてもログに記録する。

     -M      複数ホームモードを有効にする。 匿名ファイル転送のために単に ~ftp を使うのではな
             く、接続されたクライアントの IP アドレスから 完全なドメイン名付きのホスト名にマッチ
             する ~ftp 内部にあるディレクトリを使う。

     -p      パッシブモード ftp 接続を無効にする。 大きな番号のポートでの接続を拒否する ファイ
             アーウォールの後ろにいる場合に役立つ。 多くの ftp クライアントは始めにパッシブモード
             を試み、 クライアントが接続するのに指定したポートへの接続を拒否する サーバに対して常
             にうまく対応する訳ではない。

     -P      正式なポート番号や接続を初期化する PORT コマンドの 正式なアドレスの使用を許可する。
             デフォルトでは、 ftpd(8) は RFC を守っていないので、 PORT コマンドを予約されていない
             ポート番号で行わせたり、 接続元のアドレスが同じアドレスである必要がある。 これによ
             り、ローカルマシンと他のローカルマシンに対して "FTP バウンス攻撃" を防止することがで
             きる。

     -S      このオプションが設定されると、 ftpd は、ファイル /var/log/ftpd がある場合、このファ
             イルに全ての匿名ファイル転送についてログを記録する。

     -U      同時に起こる各 ftp(1) セッションは、ファイル /var/run/utmp にログが記録され、 who(1)
             のようなコマンドに見えるようにされる。 このオプションは現在のところサポートされてお
             らず、 常に何も表示せずに失敗する。

     -T      クライアントが他のタイムアウト時間をリクエストできる。 タイムアウトの最長時間は、 -T
             オプションを使って timeout 秒に設定することができる。 デフォルトのタイムアウト時間は
             2 時間である。

     -t      無活動タイムアウト時間を timeout 秒に設定する (デフォルトは 15 分である)。

     -u      デフォルトの umask を 027 から mask に変更する。

     ファイル /etc/nologin は ftp アクセスを不可にするために使われる。 このファイルが存在すると、
     ftpd はそのファイル内容を表示して終了する。 ファイル /etc/ftpwelcome が存在する場合、 ftpd
     は “ready” メッセージを表示する前に、 そのファイルの内容を表示する。 /etc/motd が存在する場
     合、 ftpd はログインが成功した後、そのファイルの内容を表示する。 ディレクトリに .message
     ファイルが存在する場合、 ftpd そのディレクトリに入ったときに、このファイルの内容を表示する。

     ftp サーバは現在のところ以下の ftp リクエストをサポートしている。 リクエストの文字の大文字小
     文字は無視される。

           リクエスト    説明
           ABOR          直前のコマンドを中断 (abort) する
           ACCT          アカウントを指定する (無視される)
           ALLO          (空の) ストレージを確保する
           APPE          ファイルを追加する
           CDUP          カレントワーキングディレクトリの親ディレクトリを変更する
           CWD           ワーキングディレクトリを変更する
           DELE          ファイルを削除する
           HELP          ヘルプ情報を表示する
           LIST          ディレクトリ中のファイルのリストを表示する (“ls -lgA”)
           MKD           ディレクトリを作成する
           MDTM          ファイルの最終修正時刻を表示する
           MODE          データ転送モードを mode に指定する
           NLST          ディレクトリ中のファイル名リストを表示する
           NOOP          何もしない
           PASS          パスワードを指定する
           PASV          サーバからサーバへの転送の準備をする
           PORT          データ接続ポートを指定する
           PWD           カレントワーキングディレクトリの名前を表示する
           QUIT          セッションを終了する
           REST          不完全だった転送を再開する
           RETR          ファイルを取得する
           RMD           ディレクトリを削除する
           RNFR          名前変更前のファイル名を指定する
           RNTO          名前変更後のファイル名を指定する
           SITE          標準でないコマンド (次のセクションを参照すること)
           SIZE          ファイルのサイズを返す
           STAT          サーバのステータスを返す
           STOR          ファイルを格納する
           STOU          ファイルを他のものと重複のない名前で格納する
           STRU          データ転送構造を structure に指定する
           SYST          サーバシステムのオペレーティングシステムのタイプを表示する
           TYPE          データ転送タイプを type に指定する
           USER          ユーザー名を指定する
           XCUP          カレントワーキングディレクトリの親ディレクトリを変更する (反対される)
           XCWD          ワーキングディレクトリを変更する (反対される)
           XMKD          ディレクトリを作成する (反対される)
           XPWD          カレントワーキングディレクトリの名前を表示する (反対される)
           XRMD          ディレクトリを削除する (反対される)

     以下の標準でないコマンドや UNIX 特有のコマンドは、 SITE リクエストを使うことでサポートされ
     る。

           リクエスト    説明
           UMASK         umask を変更する。例 ``SITE UMASK 002''
           IDLE          アイドルタイマを設定する。例 ``SITE IDLE 60''
           CHMOD         ファイルのモードを指定する。例 ``SITE CHMOD 755 filename''
           HELP          ヘルプ情報を表示する。

     インターネット RFC 959 で規定されている 他の ftp リクエストも認識されるが、 今のところ実装さ
     れてはいない。 MDTM と SIZE は RFC 959 で規定されていないが、 次に改訂される FTP RFC には登
     場するだろう。

     ftp サーバがアクティブなファイル転送プロセスを中断 (abort) するのは、 ABOR コマンドの前に、
     Telnet "Interrupt Process" (IP) シグナルや Telnet "Synch" シグナルが Telnet  ストリーム内に
     ある場合だけである。 これはインターネット RFC 959 に記述されている。 データ転送中に STAT コ
     マンドを受け取り、 その前に Telnet IP や Synch があった場合、 転送ステータスが返される。

     ftpd は、 csh(1) で使われている “ファイル名展開” による変換に基づいて、ファイル名を解釈す
     る。 これにより、ユーザーはメタキャラクタ “*?[]{}~” を利用できる。

     ftpd は 5 つのルールに従ってユーザーの認証をする。

           1.   ログイン名はパスワードデータベース /etc/passwd になければならず、 空のパスワード
                であってはならない。 この場合、あらゆるファイル転送に先だって、 クライアントから
                パスワードが提供されなければならない。 ユーザーが S/Key のキーを持っている場合、
                USER コマンドが成功した際の応答が S/Key チャレンジに含めて送られる。 クライアント
                は、それに対して PASS コマンドを使って応答する際に、 通常のパスワードと S/Key の
                ワンタイムパスワードの どちらをつけて応答するかを選択できる。 サーバはどちらのタ
                イプのパスワードを受け取ったかを自動的に判定し、 それに応じて認証を試みる。 S/Key
                認証についての詳細は skey(1) を参照すること。 S/Key は Bellcore 社の商標である。

           2.   ログイン名はファイル /etc/ftpusers にあってはならない。

           3.   ユーザーは getusershell(3) が返す標準のシェルを持っていなければならない。

           4.   ユーザー名がファイル /etc/ftpchroot にある場合、 “anonymous” アカウントや “ftp”
                アカウントの場合 (次の項目を参照) と同様に、 セッションのルートディレクトリは
                chroot(2) によってユーザーのログインディレクトリに変更される。 しかし、この場合で
                もユーザーはパスワードを与える必要がある。 この特徴は、完全に匿名なアカウントと完
                全な特権のあるアカウントの 妥協的な利用を意図している。 このアカウントは匿名アカ
                ウントとして設定されていなければならない。

           5.   ユーザー名が “anonymous” または “ftp” である場合、 匿名 ftp アカウントがパスワー
                ドファイルで (ユーザー “ftp” として) 提供されていなければならない。 この場
                合、ユーザーはどのようなパスワードを指定してもログインが許可される (慣例とし
                て、ユーザーの email アドレスがパスワードとして使われる)。

     最後のケースでは、 ftpd は、クライアントのアクセス権を制限するために、特別な評価を行う。
     サーバは “ftp” ユーザのホームディレクトリに対して chroot(2) を実行する。 システムのセキュリ
     ティが侵害されないためには、 “ftp” サブツリーを以下の規則に従って慎重に構築することを推奨す
     る:

           ~ftp      ホームディレクトリを “root” の所有とし、誰も書き込みできないように (モードを
                     555 に) すること。

           ~ftp/bin  このディレクトリを “root” の所有とし、誰も書き込みできないように (モードを
                     511 に) すること。 このディレクトリは必要で、 少なくとも静的にリンクされた
                     ls(1) のコピーがなければならない。 このディレクトリにあるプログラムのモード
                     は、 111 (実行属性のみ) でなければならない。

           ~ftp/etc  このディレクトリを “root” の所有とし、誰も書き込みできないように (モードを
                     511 に) すること。 ls コマンドが所有者を数字ではなく名前で表示できるようにす
                     るために、 ファイル passwd(5) と group(5) が必要である。 passwd のパスワード
                     フィールドは使用されないので、 実際のパスワードを入れてはならない。 ファイル
                     motd が存在すると、ログイン成功後、その内容が表示される。 このファイルはモー
                     ドが 444 でなければならない。

           ~ftp/pub  このディレクトリのモードを 555 とし、 “root” の所有とすること。 このディレク
                     トリには、伝統的に、ダウンロードのための 公開アクセス可能なファイルが格納さ
                     れる。

ファイル

     /etc/ftpusers    歓迎されない/制限を受けるユーザーのリスト。
     /etc/ftpchroot   chroot しなければならない一般ユーザーのリスト。
     /etc/ftpwelcome  歓迎のメッセージ。
     /etc/motd        ログイン後の歓迎のメッセージ。
     /etc/nologin     表示されて、アクセスが拒否される。
     /var/run/utmp    システム上のユーザーのリスト。
     /var/log/ftpd    匿名ファイル転送のログファイル。

関連項目

     ftp(1), skey(1), who(1), getusershell(3), ftpusers(5), syslogd(8)

バグ

     特権ポート番号を用いてソケットを作成するために、 サーバはスーパーユーザーとして実行しなけれ
     ばならない。 サーバーはログインしたユーザーの実行ユーザー ID を管理する (使う)。 そして、ア
     ドレスをソケットにバインドする場合にのみ、 スーパーユーザーに戻る (その権限を使う)。 考えら
     れるセキュリティホールについては、かなり綿密に調べたが、 それでも不完全かもしれない。

履歴

     ftpd コマンドは 4.2BSD で登場した。

翻訳者謝辞

     この man ページの翻訳にあたり、 FreeBSD jpman project <http://www.jp.freebsd.org/man-jp/> に
     よる翻訳を参考にさせていただいた。