tftpd デーモン

目的

トリビアル・ファイル転送プロトコル用のサーバー機能を提供します。

構文

/usr/sbin/tftpd-c ] [  -n ] [  -p ] [  -v ] [  -t ] [  -s ] [  -x ] [  -z ] [ -d Directory] [  -r  Option]

説明

注: tftpd デーモンは、通常、inetd デーモンによって開始されます。また、SRC コマンドを使用してコマンド・ラインから制御することもできます。

/usr/sbin/tftpd デーモンはトリビアル・ファイル転送プロトコル (TFTP) サーバーを実行します。TFTP を使用して送られるファイルは、 tftp コマンド・ラインまたは utftp コマンド・ラインで絶対パス名を与えて指定されたディレクトリー内で見つけられます。

注: tftp コマンド、utftp コマンド、tftpd サーバーは、監査システムが使用中のときには使用不可です。詳しくは、『TCP/IP セキュリティー』、 『監査の概要』、および audit コマンドを参照してください。

tftpd デーモンへの変更は、System Management Interface Tool (SMIT) もしくはシステム・リソース・コントローラー (SRC) を用いて /etc/inetd.conf または /etc/services ファイルを編集して行うことができます。tftpd デーモンは、/etc/inetd.conf ファイル内でコメントが解除されていれば、デフォルトで始動されます。

inetd デーモンは、/etc/inetd.conf ファイルと /etc/services ファイルから情報を取り出します。

/etc/inetd.conf または /etc/services ファイルを変更した後、 refresh -s inetd または kill -1InetdPID コマンドを実行し、inetd デーモンにその構成ファイルに対する変更内容を知らせます。

tftpd サーバーには、最低限度の特権を持つユーザー ID がなければなりません。nobody ID には最低限の権限が与えられ、これがデフォルト・ユーザー ID です。

tftpd デーモンは、System Management Interface Tool (SMIT) を使用するか、/etc/inetd.conf ファイルを変更するかして制御しなければなりません。コマンド・ラインに tftpd を入力することはお勧めできません。

tftpd サーバーはマルチスレッド・アプリケーションであり、オプション・ネゴシエーション (RFC2349) を処理できます。この機能により、 クライアントが転送するファイル・サイズを折衝できます。また、タイムアウトとブロック・サイズの拡大も可能です。 ブロック・サイズ (blksize) は読み取り要求 (RRQ) のみに関して折衝されます。その結果、TFTP を使用するディスクレス・ノードのブート時のパフォーマンスを著しく向上できます。

読み取りおよび書き込みの両方の要求の転送サイズ・オプション (tsize) ネゴシエーションが行われると、転送前にファイル・サイズを知ることができ、転送開始前に割り当てが超過した場合、エラー・メッセージが出されます。 タイムアウト・オプション (timeout) では、クライアントとサーバーが再送タイムアウト (1 から 255 秒) を折衝できます。 オプション・ネゴシエーションを実現するには、tftp クライアントが RFC2349 をサポートしていることが必要です。

tftpaccess.ctl ファイル

/etc/tftpaccess.ctl ファイルの allow: または deny: で始まる行が検索されます。他の行は無視されます。ファイルが存在しない場合は、アクセスは許可されます。許可されたディレクトリーとファイルから禁止されたディレクトリーとファイルを除いたものが、アクセス可能です。例えば、/usr ディレクトリーは許可されていますが、/usr/ucb ディレクトリーは許可されていないものとします。このことは、/usr ディレクトリー内の /usr/ucb ディレクトリーを除くすべてのディレクトリーとファイルがアクセス可能であることを意味します。/etc/tftpaccess.ctl ファイル内のエントリーは、絶対パス名でなければなりません。

/etc/tftpaccess.ctl ファイルは、root ユーザーによってのみ書き込み可能で、すべての groupsothers (すなわち、644 の権限を持つ root によって所有されている) によって読み取り可能でなければなりません。ユーザー nobody は、/etc/tftpaccess.ctl ファイルを読み取ることができなければなりません。そうでないと、tftpd デーモンはファイルの存在を認識できず、全システムへのアクセスを許可します。詳細な情報については、/usr/samples/tcpip ディレクトリー内にあるサンプルの tftpaccess.ctl ファイルを参照してください。

検索アルゴリズムは、tftp コマンドで使用されるローカル・パス名が絶対パス名であることを前提としています。/etc/tftpaccess.ctl ファイルの allow:/ を検索します。ファイル・パス名から次のコンポーネントを追加することで作成される各部分パス名を持つ許可パス名を繰り返し検索します。 一致する最長パス名が許可パス名です。その後、一致する最長許可パス名から開始して、禁止名に対して同じことを行います。

例えば、ファイル・パス名が /a/b/c/etc/tftpaccess.ctl ファイルに allow:/a/bdeny:/a が含まれているとすると、1 つの許可パス名 (/a/b) に一致し、/a/b で始まる禁止パス名には一致しないので、アクセスが許可されます。

/etc/tftpaccess.ctl ファイルが allow:/adeny:/a/b を含んでいるとすると、1 つの許可パス名 (/a) に一致しますが、/a で始まる 1 つの禁止パス名 (/a/b) に一致するので、アクセスは禁止されます。/etc/tftpaccess.ctl ファイルが allow:/a/bdeny:/a/b も含んでいるとすると、許可パス名が最初に検索されるのでアクセスは禁止されます。

システム・リソース・コントローラーによる tftpd デーモンの操作

tftpd デーモンは、 システム・リソース・コントローラー (SRC) のサブシステムである inetd デーモンのサブサーバーです。 また、tftpd デーモンは tcpip SRC サブシステム・グループのメンバーです。このデーモンは、/etc/inetd.conf ファイルの中でコメントを解除されていると使用可能となり、以下の SRC コマンドを使って操作することができます。

項目 説明
startsrc サブシステム、サブシステムのグループ、サブサーバーのいずれかを始動します。
stopsrc サブシステム、サブシステムのグループ、またはサブサーバーを終了します。
lssrc サブシステム、サブシステムのグループ、 あるいはサブサーバーのトレースの状況を取得します。

フラグ

項目 説明
-c 初期スレッドを除く、プロセス単位の並行スレッドの最大数を指定します。
-d Directory デフォルトの宛先ディレクトリーを指定します。 Directory に指定されたディレクトリーは、 ファイルの保管専用のホーム・ディレクトリーとして使用されます。 このデフォルト・ディレクトリーは、絶対パス名が指定されていない場合に使用されます。ファイル検索のデフォルト・ディレクトリーは /tftpboot です。
-i エラー・メッセージと呼び出し側のコンピューターの IP アドレスをログに記録します。
-n リモート・ユーザーがユーザー・コンピューター上でファイルを作成できるようにします。このフラグが指定されない場合に、リモート・ユーザーが唯一行えるのは、他のファイルの読み取りアクセス権でファイルを読み取ることです。
-p 着信要求用のポート番号を指定します。
-r Option tftp オプション・ネゴシエーションを使用不可にすることを指定します。複数の -r フラグが使用できます。例えば、/etc/inetd.conf ファイルの次の行は、tsizeblksize のオプション・ネゴシエーションを使用不可にします。
   tftp  dgram  udp6  SRC  nobody  /usr/sbin/tftpd tftpd -n -r tsize -r blksize
-s ソケット・レベルのデバッグをオンにします。
-t データグラムのタイムアウト値を指定します。
-v tftpd デーモンが正常にファイル転送すると通知メッセージをログに記録します。このログ記録によって、どのシステムとの間で tftpd デーモンでファイルをリモート転送しているかを追跡しつづけます。
-x データグラム待機の最大タイムアウト時間を指定します。
-z 転送に使用できる最大セグメント・サイズを指定します。

注: tftpd デーモンの引数は、SMIT を使用するか、/etc/inetd.conf ファイルを編集することによって指定することができます。

  1. tftpd デーモンを始動するには、以下のように入力します。
    startsrc  -t tftp
    このコマンドは tftpd サブサーバーを始動します。
  2. tftpd デーモンを通常どおりに停止するには、以下のように入力します。
    stopsrc  -t tftp
    このコマンドは、保留状態の接続をすべて開始し、既存の接続を完了します。しかし、新しい接続の開始は行いません。
  3. tftpd デーモンおよびすべての tftpd 接続を強制的に停止するには、以下のように入力します。

    stopsrc -f -t tftp
    このコマンドによって、保留状態の接続と既存の接続がすべて即座に終了します。
  4. tftpd デーモンに関する簡略形式の状況レポートを表示するには、以下のように入力します。
    lssrc -t tftp
    このコマンドは、デーモンの名前、プロセス ID、および状態 (アクティブか非アクティブか) を戻します。