配置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
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服务器的配置和测试完成了!