Назад | Перейти на главную страницу

Как chroot службы tftp

У меня 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 установить каталог?