tftp error code 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
}

Пожалуйста, помогите мне решить эту проблему.

7 ответов

Файл, который вы хотите поместить через tftp, должен существовать в каталоге назначения и иметь разрешения, позволяющие перезаписывать его. Например, test должен существовать в /tftpboot,

Вы можете увидеть причину в разделе ошибок на странице руководства tftp.

Я изо всех сил пытаюсь решить, как поместить новый файл через tftp, но все еще не знаю как.

Проверьте syslog и вы увидите, что:

 tftpd: serving file from /srv/tftp

В основном это ошибка, и в вашем случае вам нужно будет переместить все файлы из папки. /tftpboot в /srv/tftp (сделать папку /srv/tftp если не существует) и убедитесь, что вы предоставили 777 разрешений и для всех файлов внутри, перезапустите xinetd и это будет работать!

Как упоминается в leondgarse, вы не можете загружать новые файлы напрямую с вашими настройками. Но вы можете добавить "-c" к server_args, например:

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.

Это может быть потому, что 14.04 имеет tftp настройка сервера в /etc/inetd.conf:

#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

В моем случае это (Debian 9.9) я разрешаю это, отредактировав /etc/inetd.conf и изменив строку:

tftp dgram udp никто не ждет / usr / sbin / tcpd /usr/sbin/in.tftpd / srv / tftp

по

tftp dgram udp никто не ждет / usr / sbin / tcpd /usr/sbin/in.tftpd / tftpboot

Файл "/etc/xinetd.d/tftp" не читается.

Поиск и устранение неисправностей сервера TFTPD в Ubuntu 14.0.4 от Dayanand Ambawade

Шаг 1: Отредактируйте /etc/inetd.conf

tftp dgram udp никто не ждет / usr / sbin / tcpd /usr/sbin/in.tftpd / srv / tftpboot

Шаг 2: Написать скрипт для tftpd

sudo nano /etc/xinetd.d/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

Надеюсь, это решит проблему. С уважением

Пожалуйста, проверьте биты режима файлов.

В моем случае корневой каталог tftp /opt/tftpboot/

С помощью ls -l Команда, я мог видеть режим файла был 600, поэтому, когда я пытаюсь получить доступ к tftp, чтобы получить этот файл с анонимным, он сообщает о нарушении доступа.

Это может быть причиной этой ошибки. Но может быть и другая причина.

Не уверен, что это что-то с дизайном TFTP, но когда вы делаете пут, он не позволяет вам создать файл.

Решение:

Создайте файл заранее и дайте 777 прав. Запустите передачу снова, и она должна работать.

Другие вопросы по тегам