Skip to content

Latest commit

 

History

History
73 lines (47 loc) · 2.67 KB

200807021815.txt.md

File metadata and controls

73 lines (47 loc) · 2.67 KB

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

mkdir /tftpboot

chmod 777 /tftpboot

ls -ld /tftpboot

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)