我有一个 52 U 机架,上面有多个思科交换机和路由器。我还有一个安装了 kvm 的 ubuntu 服务器。我创建了一个安装了 ubuntu 12.04 的虚拟机,用作 tftp 服务器,在它和我的网络设备之间传输图像。我按照本网站和其他网站上的各种指南在其上安装了 tftp-hpa、tftpd-hpa 和 xinetd。
经过许多痛苦和挫折之后,我终于能够在主机上和我的 Windows 机器上进行本地 tftp。问题是我必须使用以下命令在 /var/lib/tftpboot 目录中的“nobody”用户下为每个要上传到服务器的文件创建空文件:
sudo -u nobody sh <<< "cd /var/lib/tftpboot; touch filename; chmod 777 filename"
底线如下:我希望能够简单地“tftp 放置”任何我想要的文件,而不必先使用上面的命令创建文件。在我开始破坏昂贵的东西之前,请帮助我!这是我的 xinetd.d tftp 配置:
service tftp
{
disable = no
socket_type = dgram
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -v -s /var/lib/tftpboot
}
答案1
--create, -c
Allow new files to be created. By default, tftpd will only
allow upload of files that already exist. Files are created
with default permissions allowing anyone to read or write them,
unless the --permissive or --umask options are specified.
改成server_args
:
server_args = -c -v -s /var/lib/tftpboot
您不需要 xinetd 即可启动并运行 tftpd。以下是我安装和配置 tftpd 的方法:
sudo aptitude install tftpd-hpa
sudo chown -R tftp /var/lib/tftpboot
编辑 /etc/default/tftpd-hpa 以插入-c
。TFTP_OPTIONS
该行应如下所示:
TFTP_OPTIONS="--secure -c"
最后,重新启动 tftpd 服务:
sudo service tftpd-hpa restart