系统信息:
Linux ravi-Inspiron-N5010 3.13.0-46-generic #79-Ubuntu SMP Tue Mar 10
20:08:14 UTC 2015 i686 i686 i686 GNU/Linux
使用 Ubuntu 14.04.2 LTS。
我正在努力运行 tftp localhost。
尝试过:
root@ravi-Inspiron-N5010:/home/ravi/Desktop# service tftpd-hpa restart
tftpd-hpa stop/waiting
tftpd-hpa start/running
root@ravi-Inspiron-N5010:/home/ravi/Desktop# service tftpd-hpa status
tftpd-hpa start/running
现在我收到错误:
root@ravi-Inspiron-N5010:/home/ravi/Desktop# tftp 127.0.0.1
tftp> put test
Error code 2: Access violation
tftp>
我尝试放置的文件的权限是:
root@ravi-Inspiron-N5010:/home/ravi/Desktop# ls -ld test
-rwxrwxrwx 1 ravi ravi 0 Mar 21 20:09 test
/tftpboot文件夹的权限:
root@ravi-Inspiron-N5010:/# ls -ld tftpboot/
drwxrwxrwx 2 nobody root 4096 Mar 15 15:34 tftpboot/
附加信息
root@ravi-Inspiron-N5010:/home/ravi/Desktop# nano /etc/xinetd.d/tftp
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot -s
disable = no
}
请帮我解决这个问题。
答案1
您要通过 tftp 放置的文件必须存在于目标目录中,并且具有允许其被覆盖的权限。对于您的实例,test
必须存在于 中/tftpboot
。
您可以在 tftp 手册页 BUGS 部分中查看原因。
我正在努力解决如何通过 tftp 放置新文件,但仍然不知道如何操作。
答案2
检查syslog
一下你会看到:
tftpd: serving file from /srv/tftp
基本上有一个错误,您需要将所有文件从文件夹移动/tftpboot
到/srv/tftp
(/srv/tftp
如果不存在则创建该文件夹),并确保授予其中所有文件 777 权限,重新启动xinetd
它即可正常工作!
答案3
这可能是因为 14.04 有一个tftp
服务器设置/etc/inetd.conf
:
#BOOT: TFTP service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
您可以注释掉此行并重试。
我从这里得到这个: http://www.beer.org/blog/tftpd-and-xinetd-on-ubuntu.html
答案4
就我而言(Debian 9.9),我通过编辑 /etc/inetd.conf 并修改以下行来解决这个问题:
tftp dgram udp 等待无人 /usr/sbin/tcpd /usr/sbin/in.tftpd/srv/tftp
经过
tftp dgram udp 等待无人 /usr/sbin/tcpd /usr/sbin/in.tftpd/tftp启动
文件“/etc/xinetd.d/tftp”未被读取。