web-dev-qa-db-ja.com

TFTP:サーバーエラー:(2)アクセス違反

以下のコマンドを使用してTFTPサーバーにファイルを送信しようとしています。

_tftp -p -l test.txt xx.xx.xx.xx_

そしてTFTPの使用法は次のとおりです。

BusyBox v1.13.2(2011-03-24 18:58:44 CDT)マルチコールバイナリ

使用法:tftp [OPTION] ...ホスト[PORT]

Tftpサーバーとの間でファイルを転送する

オプション:-lFILEローカルFILE-rFILEリモートFILE-gファイルの取得-pファイルの配置

上記のコマンドでファイルを送信しようとすると、次のエラーが発生しました:tftp: server error: (2) Access violation....

しかし、サーバーでtest.txt(送信する必要のあるファイル名)を手動で作成してからサーバーに転送しようとすると、正常にアップロードされました。

手動で作成せずにファイルを送信するにはどうすればよいですか?

Tftpサーバーにxinetdサービスを使用しています。以下はその構成ファイルです。

/etc/xinetd.d/tftp:service tftp {protocol = udp port = 69 socket_type = dgram wait = yes user = root server = /usr/sbin/in.tftpd server_args =/tftpboot/disable = no}

2
pankil

これが私が問題をデバッグした方法です。

# tail /var/log/syslog

上記のコマンドの出力は、tftpdが/srv/tftpからファイルを提供していることを示していますが、/srv/tftp/etc/xinetd.d/tftpについての言及はありません。

また、この投稿は問題のデバッグに役立ちました: http://toddharris.net/blog/2011/06/19/debugging-xinetd-at-system-launch/ 。デバッグモードでxinetdを実行しても、この問題は発生しませんでした。

次のリンクに記載されているように、原因は/etc/inetd.confのtftp行でした: http://www.beer.org/blog/category/tech-stuff.html おそらくxinetdが実行されているときデーモンとして、/etc/inetd.conf/etc/xinetd.dディレクトリ内の設定ファイルよりも優先されるため、xinetdをデーモンとして実行するとこの問題が発生します。

/etc/inetd.confのtftp行をコメントアウトし、xinetdを再起動すると、この問題が修正されました。

1

追加 -cあなたのserver_args

server_args = -c /tftpboot/

tftpd(8)のマニュアルページ を参照してください。

0
garyjohn