web-dev-qa-db-ja.com

tftpエラーコード2アクセス違反(tftpが機能していません)

システム情報:

Linux ravi-Inspiron-N5010 3.13.0-46-generic #79-Ubuntu SMP Tue Mar 10
20:08:14 UTC 2015 i686 i686 i686 GNU/Linux

Ubuntu 14.04.2 LTSを使用します。

Tftp localhostの実行に苦労しています。

試した:

root@ravi-Inspiron-N5010:/home/ravi/Desktop# service tftpd-hpa restart
tftpd-hpa stop/waiting
tftpd-hpa start/running
root@ravi-Inspiron-N5010:/home/ravi/Desktop# service tftpd-hpa status
tftpd-hpa start/running

今、私はエラーが発生します:

root@ravi-Inspiron-N5010:/home/ravi/Desktop# tftp 127.0.0.1
tftp> put test
Error code 2: Access violation
tftp> 

私が入れようとしているファイルの許可は:

root@ravi-Inspiron-N5010:/home/ravi/Desktop# ls -ld test 
-rwxrwxrwx 1 ravi ravi 0 Mar 21 20:09 test

/ tftpbootフォルダーの許可:

root@ravi-Inspiron-N5010:/# ls -ld  tftpboot/
drwxrwxrwx 2 nobody root 4096 Mar 15 15:34 tftpboot/

追加情報

root@ravi-Inspiron-N5010:/home/ravi/Desktop# nano /etc/xinetd.d/tftp

service tftp


{
   protocol = udp
   port = 69
   socket_type = dgram
   wait = yes
   user = nobody
   server = /usr/sbin/in.tftpd
   server_args = /tftpboot -s
   disable = no
}

この問題の解決を手伝ってください。

3
Ravi Sharma

Tftpを介して配置するファイルは、宛先ディレクトリに存在し、上書きできる許可を持っている必要があります。インスタンスの場合、test/tftpbootに存在する必要があります。

理由はtftpのマニュアルページのバグセクションで確認できます。

私はtftpを介して新しいファイルを置く方法を解決するのに苦労していますが、それでも方法がわかりません。

4
leondgarse

syslogを確認すると、次のことがわかります。

 tftpd: serving file from /srv/tftp

基本的にバグがあり、あなたのケースではすべてのファイルをフォルダー/tftpbootから/srv/tftpに移動する必要があります(存在しない場合はフォルダー/srv/tftpを作成します)。 777パーミッションと内部のすべてのファイルに対して、xinetdを再起動すると動作します!

4
enjoy

Leondgarseが言及したように、設定で新しいファイルを直接アップロードすることはできません。ただし、次のようにserver_argsに「-c」を追加できます。

service tftp
{
   protocol = udp
   port = 69
   socket_type = dgram
   wait = yes
   user = nobody
   server = /usr/sbin/in.tftpd
   server_args = -c -s /tftpboot
   disable = no
}

詳細については、「in.tftpd」のマニュアルページを参照してください。

   --create, -c
          Allow new files to be created.  By default, tftpd will only allow upload of files that already exist.  Files are created with default permissions allow‐
          ing anyone to read or write them, unless the --permissive or --umask options are specified.
2
alfred

これは、14.04の/etc/inetd.conftftpサーバー設定があるためです。

#BOOT: TFTP service is provided primarily for booting.  Most sites
#       run this only on machines acting as "boot servers."
tftp    dgram  udp wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /srv/tftp

この行をコメントアウトして、再試行できます。

ここから入手しました: http://www.beer.org/blog/tftpd-and-xinetd-on-ubuntu.html

2
hashtpaa

Dayanand AmbawadeによるUbuntu 14.0.4でのTFTPDサーバーのトラブルシューティング

ステップ-1:/etc/inetd.confを編集

tftp dgram udp wait nobody/usr/sbin/tcpd /usr/sbin/in.tftpd/srv/tftpboot

ステップ-2:tftpdのスクリプトを書く

Sudo nano /etc/xinetd.d/tftp

サービスtftp

{
   protocol = udp
   port = 69
   socket_type = dgram
   wait = yes
   user = nobody
   server = /usr/sbin/in.tftpd
   server_args = /srv/tftpboot -s
   disable = no
}

ステップ-3:ディレクトリを作成し、権限を設定します

Sudo mkdir /srv/tftpboot
Sudo echo "Test TFTP Server" > /srv/tftpboot/test.txt
Sudo chmod 777 -R /srv/tftpboot
Sudo chown -R nobody.root /srv/tftpboot

ステップ-4:サービスの開始

Sudo service xinetd restart
Sudo service inetutils-inetd restart

ステップ5:サーバーのテスト

echo "get test.txt" | tftp 127.0.0.1
cat test.txt
Test TFTP Server

うまくいけば、これで問題が解決するでしょう。よろしく

0

私の場合、(Debian 9.9)/etc/inetd.confを編集し、次の行を変更することで解決します:

tftp dgram udp wait nobody/usr/sbin/tcpd /usr/sbin/in.tftpd / srv/tftp

沿って

tftp dgram udp wait nobody/usr/sbin/tcpd /usr/sbin/in.tftpd / tftpboot

ファイル「/etc/xinetd.d/tftp」は読み取っていませんでした。

0
maumau3134

これがTFTPの設計に関係するものかどうかはわかりませんが、putを実行するとファイルを作成できません。

解決:

事前にファイルを作成し、777権限を付与します。転送を再度実行すると、動作するはずです。

0
michael

ファイルモードビットを確認してください。

私の場合、tftpルートディレクトリは/opt/tftpboot/です

ls -lコマンドを使用すると、ファイルモードが600であることがわかりました。匿名でこのファイルを取得するためにtftpにアクセスしようとすると、アクセス違反が報告されます。

これがこのエラーの原因である可能性があります。しかし、それには別の理由があるかもしれません。

0
user723651