如何在 Linux 上設(shè)置 TFTP 服務(wù)器
您知道流行的文件傳輸協(xié)議有一個更簡單的替代方案嗎?它就是 TFTP,以下是在 Linux 上設(shè)置它的方法。
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協(xié)議)于 1980 年首次被定義。它是一個相當(dāng)古老的協(xié)議,于 1981 年 6 月由 Karen R. Sollins 在 RFC 783(征求意見)中作為 TFTP 協(xié)議修訂版 2 發(fā)布。
早期,TFTP 的主要目標(biāo)是通過網(wǎng)絡(luò)發(fā)送和接收文件。特別是,它用于傳輸引導(dǎo)期間所需的文件,以使系統(tǒng)能夠通過網(wǎng)絡(luò)引導(dǎo)。
下面介紹如何在 Linux 機器上設(shè)置 TFTP 服務(wù)器。
什么是 TFTP?
TFTP 仍用于文件傳輸目的,它支持的功能沒有根本變化。TFTP 用于通過 UDP/IP 下載和發(fā)送文件。它沒有其他文件傳輸協(xié)議中常見的身份和授權(quán)控制、文件列表、刪除或重命名等附加功能。
與在傳輸層使用 TCP 的高級文件傳輸協(xié)議不同,它工作在 UDP 協(xié)議上,不具有檢查屬于文件的數(shù)據(jù)包是否會發(fā)送到另一端等功能。由于這個限制,它更適合在局域網(wǎng)中使用,而不是在互聯(lián)網(wǎng)或廣域網(wǎng)中使用。
盡管上面列出了所有這些看似不利的特性,但 TFTP 協(xié)議非常強大的一個方面是它的簡單性。與其替代方案相比,該協(xié)議的實現(xiàn)非常容易,即使對于沒有操作系統(tǒng)的環(huán)境也是如此。由于這個特性,它在嵌入式系統(tǒng)中有廣泛的使用領(lǐng)域。
在 Linux 上安裝 TFTP 服務(wù)器
使用嵌入式設(shè)備時,安裝 TFTP 服務(wù)器服務(wù)很重要。在 Linux 系統(tǒng)上,可以運行多個 TFTP 服務(wù)器實現(xiàn)。如果您使用的是基于 Debian 的發(fā)行版,您可以安裝tftpd-hpa、tftpd或atftpd軟件包。如果您不確定選擇哪一個,請考慮安裝 tftpd-hpa 軟件包。
┌──(linuxmi?linuxmi)-[~/linuxmi.com]
└─$ sudo apt-get install tftpd-hpa
安裝后,TFTP 服務(wù)將開始偵聽 UDP 端口 69。要通過 TFTP 服務(wù)器將文件提供給其他系統(tǒng),您需要記住一些先決條件:
- 將所需文件復(fù)制到 TFTP 主目錄或該主目錄下的目錄
- 使文件權(quán)限對公眾可見
要找出 TFTP 服務(wù)器主目錄是什么,您可以查看/etc/default/tftpd-hpa文件中的TFTP_DIRECTORY變量。通常,您會看到/var/lib/tftpboot或/srv/tftp 之類的目錄。如果需要,您可以更改此目錄并重新啟動服務(wù)。
┌──(linuxmi?linuxmi)-[~/linuxmi.com]
└─$ cat /etc/default/tftpd-hpa
為了便于使用,如果您將相關(guān) TFTP 主目錄的所有者更改為您的用戶帳戶,則無需在運行的每個命令中添加 sudo 前綴。使用 chown 命令將所有權(quán)從 root 更改為當(dāng)前用戶:
sudo chown -R $USER /srv/tftp
TFTP 服務(wù)器包名稱和默認(rèn)主目錄可能因使用的 Linux 發(fā)行版而異。
使用 TFTP 服務(wù)器發(fā)送文件
有時在某些情況下,TFTP 是將文件從嵌入式 Linux 系統(tǒng)移動到外部環(huán)境的唯一選擇。例如,有時系統(tǒng)可能不支持任何可用于傳輸文件的可寫媒體。
在這種情況下,由于 TFTP 客戶端可能會在busybox中編譯,您可以將系統(tǒng)中保存的文件發(fā)送到網(wǎng)絡(luò)上的 TFTP 服務(wù)器。
要使用 TFTP 客戶端應(yīng)用程序,請發(fā)出busybox tftp命令:
busybox tftp
要將示例文件發(fā)送到 TFTP 服務(wù)器,您需要使用如下命令:
busybox tftp -l example.bin -p 192.168.1.111
雖然上面的命令是正確的,但在將文件傳輸?shù)?TFTP 服務(wù)器時會出錯。由于返回的錯誤消息不是不言自明的,因此很難理解真正的問題是什么。
這里的問題是因為 TFTP 服務(wù)器上的一些安全程序。TFTP 要求具有相同名稱的文件應(yīng)位于將寫入文件的目錄中,作為文件上傳的先決條件,并且該文件的寫入權(quán)限應(yīng)可供所有人使用。
換言之,無法通過 TFTP 客戶端上傳 TFTP 服務(wù)器上不存在的文件。如果您創(chuàng)建一個同名的空文件并編輯其訪問權(quán)限,則上述上傳過程將成功。為此,您必須在相關(guān)的 TFTP 服務(wù)器主目錄中運行以下命令:
cd /srv/tftp
touch example.bin
chmod 666 example.bin
現(xiàn)在您可以成功執(zhí)行上傳了。
也可以禁用上述安全措施并讓 TFTP 服務(wù)器創(chuàng)建一個不存在的文件。為此,您可以在啟動tftpd-hpa應(yīng)用程序時使用-c或–create參數(shù)。將此參數(shù)添加到/etc/default/tftpd-hpa文件中現(xiàn)有的TFTPD_OPTIONS變量就足夠了:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create"
為什么使用 TFTP 服務(wù)器進(jìn)行文件傳輸?
TFTP 最重要的優(yōu)點是速度快,并且可以幫助您節(jié)省時間。它是將網(wǎng)絡(luò)設(shè)備的配置文件傳輸?shù)狡渌到y(tǒng)的理想選擇。此外,它具有非常簡單的使用標(biāo)準(zhǔn)。它可以與基于 Windows 和 Linux 的操作系統(tǒng)上的軟件一起輕松運行。最后,在技術(shù)上無法使用 FTP 的情況下,TFTP 總是可以挽救局面。
當(dāng)然,最大的缺點是不安全。因此,使用 TFTP 服務(wù)器傳輸文件時必須非常小心。
除了文件傳輸之外,您不能使用 TFTP 服務(wù)器執(zhí)行文件刪除、編輯和修改等功能。對于那些使用或?qū)で蟾呒壪到y(tǒng)的人來說,此功能是一個主要缺點。最后,它不需要身份驗證,如果您認(rèn)真對待自己的安全性,這是一個主要缺點。
在其他操作系統(tǒng)上設(shè)置 TFTP
如果要在 Windows 上使用 TFTP,則無需安裝任何第三方軟件。您可以使用控制面板中的打開或關(guān)閉 Windows 功能選項啟用 TFTP。