Como fazer o chroot do serviço tftp

1

Eu tenho o tftp instalado no Ubuntu 10.04 com o arquivo /etc/xinetd.d/tftp abaixo.
Posso me conectar ao servidor tftp usando

tftp 10.1.1.54
get pxelinux.0

e recua o arquivo sem problemas. Quando eu tento:

get /pxelinux.0

Eu obtenho um

Error Code 2: Access violation

Isso é um problema porque o ambiente de inicialização do HP PXE solicita o pxelinux.0 com o início /. Eu suspeito que ele está tentando usar o diretório raiz do servidor como / root em vez de usar / tftpboot como a raiz. Eu olhei para os documentos, mas eu não consigo ver uma maneira de chroot tftp assim que interpreta a barra principal corretamente

Obrigado antecipadamente.

service tftp
{
protocol        = udp
port            = 69
socket_type     = dgram
wait            = yes
user            = nobody
server          = /usr/sbin/in.tftpd
server_args     = /tftpboot
disable         = no
}
    
por John P 15.06.2011 / 05:38

2 respostas

0

Isso pode ser um problema de permissões, o / tftpboot e o pxelinux.0 são legíveis?

Editar: Você já tentou usar o argumento -s para o tftpd definir o diretório?

    
por 15.06.2011 / 12:45
2

Você pode usar a opção -s para o tftpd para realizar o que deseja.

Se eu tiver um diretório /tftpboot assim:

# ls /tftpboot
afile

E eu corro tftpd assim:

# tftpd -l -s /tftpboot

Então isso:

tftp> get afile

É equivalente a isto:

tftp> get /afile

Você modificaria a linha server_args do seu arquivo de configuração:

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