У меня tftp установлен на Ubuntu 10.04 с файлом /etc/xinetd.d/tftp ниже.
Я могу подключиться к tftp-серверу, используя
tftp 10.1.1.54 get pxelinux.0
и он без проблем извлекает файл. Когда я пытаюсь:
get /pxelinux.0
Я получаю
Error Code 2: Access violation
Это проблема, потому что загрузочная среда HP PXE запрашивает pxelinux.0 с начальным /. Я подозреваю, что он пытается использовать корневой каталог сервера в качестве / root вместо использования / tftpboot в качестве корневого. Я просмотрел документы, но не вижу способа chroot tftp, поэтому он правильно интерпретирует ведущую косую черту
Заранее спасибо.
service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody server = /usr/sbin/in.tftpd server_args = /tftpboot disable = no }
Вы можете использовать -s
вариант tftpd, чтобы выполнить то, что вы хотите.
Если у меня есть каталог /tftpboot
как это:
# ls /tftpboot
afile
И я бегу tftpd
как это:
# tftpd -l -s /tftpboot
Тогда это:
tftp> get afile
Эквивалентно этому:
tftp> get /afile
Вы бы изменили server_args
строка вашего файла конфигурации:
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
}
Это может быть проблема с разрешениями, доступны ли / tftpboot и pxelinux.0 для чтения всем?
Редактировать: Вы пробовали использовать -s аргумент в tftpd установить каталог?