TFTPD(8)

名称
tftpd - DARPA インターネット Trivial File Transfer Protocol サーバ

書式
tftpd [-g group] [-l] [-n] [-s directory] [-u user] [directory ...]

解説
tftpd は、 DARPA Trivial File Transfer Protocol をサポートするサーバです。 TFTP サーバは、 ‘tftp’ サービスの記述が行われているポートにて動作します。 サービスの記述については、 services(5) を参照して下さい。本サーバは、通常は inetd(8) から起動されます。

tftp(1) の使用に際しては、リモートシステム上のアカウントやパスワードの入力は 必要ありません。 認証に関する情報が欠けているため、 tftpd は、全ユーザに読むことのできるファイルのみアクセスを許可します。 ファイル名が ``../'' で始まっていたり ``/../'' を 含んでいてはいけません。 ファイルへの書込みについては、すでにファイルが存在しており、なおかつその ファイルの書込み属性が全ユーザに解放されている場合にのみ行えます。 "public" のコンセプトに対するこの拡張には、ネットワークを通してアクセス可能な全ての ホスト上の全てのユーザが含まれることに注意して下さい。これは一部のマシンでは 適切でないので、tftp サービスを有効にする前にこれについて考慮すべきです。

tftpd 起動時のファイルへのアクセス制限は、 /etc/inetd.conf 内のサーバプログラムの引数として tftp によるアクセスを許可するディレクトリの リストを記述することで行えます。この場合、ファイル名の先頭に 指定したディレクトリのいずれかがついたファイルに対しては、 アクセスが制限されます。 指定したディレクトリリクエストされたファイル名の相対パスとしても扱われます。

オプションは以下のものがあります:

-g group
    起動時に、gid を group で指定したものに変更します。このオプションが指定されていない場合には、gid は -u で指定された user のものになります。

-l  全リクエストを syslog(3) を使ってログに残します。

-n  リクエストに対して、対応するファイルがないという旨の negative ack を 返しません。

-s directory
    起動時に directory に chroot(2) します。 これはセキュリティの都合により推奨します ( /tftpboot ディレクトリ以下にあるもの以外にアクセスできないようにするためです)。 もしリモートホストが送ってくるファイル名の一部にディレクトリ名が 含まれる場合には、 ‘tftpboot’ から /tftpboot 下の ‘’. へのシンボリックリンクを作らなければならなくなるでしょう。

-u user
    Change uid to that of 起動時に uid を user のものに変更します。 -u が指定されなかった場合には user のデフォルトは “nobody” になります。 -g も指定されなかった場合には、同様に gid もそのユーザの gid になります。

関連項目
tftp(1), inetd(8) RFC, 1350, July 1992, The TFTP Protocol (Revision 2).

歴史
tftpd コマンドは 4.2BSD から登場しました。

-s フラグは NetBSD 1.0 からつきました。

-g および -u フラグは NetBSD 1.4 で登場しました。

セキュリティに関する考察
tftpd のセットアップ時には、 -s フラグを使って tftpd がリモートホストに対して提供するファイルを置くディレクトリ名 (たとえば /tftpboot) を指定することを 強く 薦めます。これにより、リモートホストによってアクセスされるはずの ファイルだけがアクセスされるようにできます。

TFTP プロトコル内にはユーザのログイン手続きや認証機構がないため、 リモートサイトに対してはなんらかの適切なファイルアクセス制限を かけることになるでしょう。どうすれば厳重にできるかは各サイトにより 異なるため、ここで述べるのは困難です。