Ubuntu

如何對 tftp 服務進行 chroot

  • June 15, 2011

我在 Ubuntu 10.04 上安裝了 tftp,並帶有以下 /etc/xinetd.d/tftp 文件。

我可以使用連接到 tftp 伺服器

tftp 10.1.1.54
獲取 pxelinux.0

它可以毫無問題地重新處理文件。當我嘗試:

獲取 /pxelinux.0

我得到一個

錯誤程式碼 2:訪問衝突

這是一個問題,因為 HP PXE 引導環境請求帶有前導 / 的 pxelinux.0。我懷疑它試圖將伺服器根目錄用作 /root 而不是 /tftpboot 用作根。我查看了文件,但看不到 chroot tftp 的方法,因此正確解釋了前導斜杠

提前致謝。

服務 tftp
{
協議 = udp
埠 = 69
socket_type = dgram
等待=是的
使用者 = 沒有人
伺服器 = /usr/sbin/in.tftpd
server_args = /tftpboot
禁用 = 否
}

這可能是權限問題,/tftpboot 和 pxelinux.0 是否可讀?


**編輯:**您是否嘗試過使用 tftpd 的-s 參數來設置目錄?

你可以使用-stftpd 的選項來完成你想要的。

如果我有這樣的目錄/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
}

引用自:https://serverfault.com/questions/280537