EN JA
TFTPD(8)
TFTPD(8) FreeBSD System Manager's Manual TFTPD(8)

名称

tftpdインターネット TFTP (Trivial File Transfer Protocol) サーバ

書式

tftpd [ -cdClnow][ -F strftime-format][ -s directory][ -u user][ -U umask][ directory ...]

解説

tftpd ユーティリティは、TFTP (Internet Trivial File Transfer Protocol) (RFC 1350) をサポートするサーバです。 TFTP サーバは、‘ tftp’サービス記述で指示されたポートで動作します。 services(5) を参照してください。通常、サーバは、 inetd(8) によって開始されます。

tftp(1) の使用は、リモートシステムでアカウントまたはパスワードを必要としません。認証情報の不足のために、 tftpd は、公的な読み込み可能なファイルがアクセスされることだけを許可します。文字列“ /../”を含むか、または“ ../”で始まるファイルは、許可されていません。ファイルは、既に存在していて、公的に書き込み可能である場合にだけ、書き込まれます。ネットワークを通して到達することができるすべてのホストですべてのユーザを含むように“public” (パブリック) の概念を拡張していることに注意してください。これは、すべてのシステムで適切でないかもしれません、そして、その影響は、tftp サービスを有効にする前に、考慮されるべきです。サーバは、可能な限り低い特権があるユーザ ID であるべきです。

ファイルへのアクセスは、 inetd.conf(5) のサーバプログラム引数として最大 20 のパス名を含むことによってディレクトリのリストを付けた tftpd を呼び出すことによって、制限されます。この場合、アクセスは、名前が与えられたディレクトリの 1 で前に付けられたファイルに制限されます。また、与えられたディレクトリは、相対的なファイル名の要求に対して検索パスとして扱われます。

-s オプションは、 tftpd のルートディレクトリを変更し、それによって、指定された directory の外部へのアクセスを禁止することによって、さらなる安全性を提供します、 chroot(2) は、スーパユーザ特権を必要とするので、 tftpd は、 root として実行されなければなりません。しかしながら、 chroot(2) 呼び出しを実行した後に、 tftpd は、ユーザ ID を指定された user または -u オプションが指定されないなら、“ nobody”に設定します。

オプションは、次の通りです:

-c
接続ホストのデフォルトのルートディレクトリを、接続 IP アドレスに基き、 chroot(2) によって変更します。これにより、複数のクライアントが同じファイルへ同時に書き込むことを防ぎます。ディレクトリが存在しない場合、クライアントの接続は、拒否されます。 -c には、 -s オプションが必須であり、指定された directory が基点として使用されます。
-C
-c と同様に動作しますが、クライアントの IP 用のディレクトリが存在しない場合、 -s で指定された directory を使うことになります。
-F
-W が指定されるなら、接尾辞の作成のために strftime(3) 互換の書式文字列を使用します。デフォルトで、文字列 "%Y%m%d"が、使用されます。
-d, -d [value]
デバッグ出力を有効にします。 value が指定されないなら、デバッグレベルは、指定された -d の各インスタンス毎に 1 増加します。

value が指定されるなら、デバッグレベルは、 value に設定されます。デバッグレベルは、 src/libexec/tftpd/tftp-utils.h で実装されたビットマスクです。有効な値は、0 (DEBUG_NONE)、1 (DEBUG_PACKETS)、2 (DEBUG_SIMPLE)、 4 (DEBUG_OPTIONS) と 8 (DEBUG_ACCESS) です。ビットマスクは、値を論理 OR することによって複数のデバッグ値を組み合わせることができます。例えば、 -d 15 を指定すると、すべてのデバッグ値が有効にされます。

-l
全ての要求を、 syslog(3) のファシリティ LOG_FTP を使って、ログ保存します。 : syslog 設定ファイル syslog.conf(5) においても、 LOG_FTP メッセージのログ機能を有効とする必要があります。
-n
存在しない相対ファイル名に対する要求の否定応答を抑止します。
-o
RFC2347 スタイルの TFTP オプションのサポートを無効にします。
-s directory
directory へと、 tftpd のルートディレクトリを変更させます。変更後、コマンドを受け付ける前に、 tftpd は、非特権ユーザの権限へ移行します。
-u user
-s オプション使用時に、権限を user (デフォルトでは、“ nobody”です) へ切り替えます。 user は、名前で指定することが必要であり、数値の UID では駄目です。
-U umask
新規に作成されたファイルに umask を設定します。デフォルトは、022 ( S_IWGRP | S_IWOTH) です。
-w
書き込み要求で新しいファイルを作成することを許可します。デフォルトでは、 tftpd は、書き込み要求で指定されたファイルが存在することを要求します。これは、 -u オプションで指定されたユーザによって書き込み可能なディレクトリでのみ動作することに注意してください。
-W
-w と同様ですが、YYYYMMDD.nn のシーケンス番号をファイル名の終わりに追加します。 -F オプションで文字列 YYYYMMDD を変更できることに注意してください。

関連項目

tftp(1), chroot(2), syslog(3), inetd.conf(5), services(5), syslog.conf(5), inetd(8)

次の RFC がサポートされています: RFC 1350: The TFTP Protocol (Revision 2). RFC 2347: TFTP Option Extension. RFC 2348: TFTP Blocksize Option. RFC 2349: TFTP Timeout Interval and Transfer Size Options.

標準でない rolloverblksize2 TFTP オプションは、次に記載されています: Extending TFTP, http://www.compuphase.com/tftp.htm.

歴史

tftpd ユーティリティは、 4.2BSD で登場しました。 -s オプションは、 FreeBSD 2.2 で導入され、 -u オプションは、 FreeBSD 4.2 で導入され、 -c オプションは、 FreeBSD 4.3 で導入され、 -F-W オプションは、 FreeBSD 7.4 で導入されました。

Timeout Interval と Transfer Size Options (RFC2349) のサポートは、 FreeBSD 5.0 で導入され、TFTP Blocksize Option (RFC2348) と blksize2 オプションのサポートは、 FreeBSD 7.4 で導入されました。

Edwin Groothuis <edwin@FreeBSD.org>は、RFC2348 をサポートするために tftpdtftp(1) コードの主要な書き直しを実行しました。

クライアントとサーバがブロックサイズネゴシエーション (RFC 2347 と 2348) または標準でない TFTP ロールオーバオプションをサポートせずに、 33,553,919 オクテット (65535 ブロック、最後の 1 つは 512 オクテット未満) より大きなファイルを正確に転送することができません。その場しのぎの解決策として、 tftpd は、たとえロールオーバオプションがサポートされなくても、 65535 の後 0 に折り畳むブロック番号のシーケンスを受け付けます。

多くの tftp クライアントは、符号なしの 16 ビットの整数でなく符号付きを使用するブロック番号を間違ってカウントするので、 16,776,703 オクテット (32767 ブロック) を越えるファイルを転送しません。

June 22, 2011 FreeBSD