配置Ubuntu tftp服務的步驟:
1、安裝相關軟件包:Ubuntu tftp(服務端),tftp(客戶端),xinetd
sudo apt-get install tftpd tftp xinetd
2、建立配置文件
在/etc/xinetd.d/下建立一個配置文件tftp
sudo vi tftp
在文件中輸入以下內容:
service tftp
{socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4}
保存退出
3、建立Ubuntu tftp服務文件目錄(上傳文件與下載文件的位置),並且更改其權限
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot -R
4、重新啟動服務
sudo /etc/init.d/xinetd restart
至此Ubuntu tftp服務已經安裝完成了,下面可以對其進行一下測試。
tftp服務器測試:
測試情況:
安裝過程中出現的問題及原因
現象一:
tftp> get test.log
Transfer timed out.
原因:
tftpd服務沒有啟動
現象二:
tftp> get test.log
Error code 2: Only absolute filenames allowed
原因:
在/etc/xinetd.d/tftpd中設置的server_args為/etc/default/tftpd-hpa
cat /etc/default/tftpd-hpa
#Defaults for tftpd-hpa
RUN_DAEMON="no"
OPTIONS="-s /home/tftpd -c -p -U 077 -u tftpd"
設置的時候只要將server_args=改為你自己設定的服務器文件夾就行了
現象三:
tftp> put ex070416.log
Error code 1: File not found
原因:
指定的文件不存在;或tftpd啟動參數中沒有指定-c選項,允許上傳文件
現象四(最經常出現的問題):
tftp> put test2.txt
Error code 2: Access violation
原因:tftp服務器默認情況下,是可以下載文件的,當要上傳文件時,需要在服務器文件夾下有相同名稱,並且需要相應的讀寫權限,如果現在使用的是 root用話,那么需要root的讀寫需要上傳的文件的權限,同時在服務器文件夾下也需要讀寫權限,文件權限至少為666才可以.
正確做法例子:
文件下載
tftp服務器文件夾路徑為:/tftproot
服務器下文夾為:
在tftproot下新建一個文件:
在其他文件夾下(如/opt)下載名叫test1.txt的文件,下載用的用戶均為doyoo:
如上圖所示:
出現了Permission denied的提示,說明doyoo這個用戶對於/opt/沒有寫如文件的權限,那么需要root用戶賦予這個權限,或者進入doyoo專用空間進行我們的測試
進入doyoo的用戶空間:
這是發現我們可以進行tftp服務器的下載任務了
文件上傳:
新建了一個名為:sendfile.txt的文件:
顯然文件的權限屬性為644
現在在tftp服務器中也同樣新建一個名為sendfile.txt的文件,當然這里需要root用戶賦予doyoo用戶相應的寫入權限,因為上傳文件就是利用tftp覆蓋住原來服務器就有的文件,
那么需要上傳的文件在服務器中的映像對於用戶doyoo來說當然也需要能寫入的權限,所以同樣的使用root改寫sendfile.txt的權限,將其該為666.
可以看到上面已經完成了:
1.使用root用戶修改doyoo用戶對於tftproot文件夾的讀寫權限
2.tftproot文件夾下新建了一個名為sendfile.txt的文件。
3.sendfile.txt權限改為了666,不樣的話,同樣會出現Error code 2: Access violation的情況
完成上面的關鍵三步后,就可以上傳文件了:
至此,tftp服務器的配置和測試完成了!