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 прав. Запустите передачу снова, и она должна работать.