23.19 Debian上如何安装配置tftp服务
http://scz.617.cn/unix/200807021815.txt
A: scz@nsfocus
apt-get update -u apt-cache search tftpd apt-get install tftpd
一般安装完就自动启动了:
netstat -na -u | grep :69
drwxrwxrwx 2 root root 4096 2008-07-02 18:15 /tftpboot/
编辑/etc/inetd.conf,给/usr/sbin/in.tftpd指定参数:
-s /tftpboot
kill -1 <inetd's pid>使之生效。
如果tftpd提供下载服务,应该事先在服务端"chmod 444 downloadfile"。
如果tftpd提供上载服务,应该事先在服务端"chmod 222 uploadfile"。
这里仅指定了最小所需权限,放宽权限当然没问题。
A: Debian 4.0上TFTPD(8)手册页
摘要
tftpd [-n] [-s] [<a list of directories>]
描述
tftpd侦听69/UDP口,参看/etc/services。该服务一般通过inetd(8)启动,参看
/etc/inetd.conf。
tftp不要求帐号、口令即可访问远程系统。由于缺乏身份认证信息,in.tftpd在
处理get请求时只允许访问全局可读文件。而在处理put请求时,要求server端文
件名已存在且全局可写。
in.tftpd以nobody身份运行。
tftp只能访问<a list of directories>中指定目录下的文件。假设该目录列表
为"/root/src/demo /tmp",则get请求可以访问/root/src/demo/somefile或者
/tmp/somefile。如果没有指定<a list of directories>,缺省值为/tftpboot,
不过/etc/inetd.conf中一般指定成/srv/tftp。如果指定成/,意味着整个文件
系统可访问。
修改/etc/inetd.conf指定自己的目录列表,并kill -1 <inetd's pid>使之生效。
-n 以相对路径请求不存在的文件时,tftpd不产生"否定确认信息"。不过我测
了一下,没啥效果,搞不懂。
-s 相当于启动了chroot功能,所有绝对路径都将局限在chroot环境中。chroot
的根路径为<a list of directories>中的第一个目录,如果没有指定
<a list of directories>,则使用/tftpboot。如果指定了-s /tmp,而get
请求/somedir/somefile,最终实际访问的是/tmp/somedir/somefile。
对于多目主机上的tftpd,情况有点复杂。tftpd产生响应时用的源端口不是
69/UDP,而是一个随机端口,此时如果响应用的源IP不是请求用的目标IP,对于
客户端来说,这个响应不被接受。请用Wireshark抓包加强理解。
参看
tftp(1), inetd(8)