tftp启动问题:recvfrom:非套接字上的套接字操作

tftp启动问题:recvfrom:非套接字上的套接字操作

我正在尝试tftpd(在没有 的 arch 上inetd)开始一个简单的(或者我是这么认为的)操作(没有什么永久的)。

但是,tftpd <directory>按照手册中的建议启动会失败,并在系统日志中显示以下注释:

tftpd[PID]: recvfrom: Socket operation on non-socket

strace tftpd说:

(...)
geteuid()                               = 0
setgid(65534)                           = 0
setuid(65534)                           = 0
ioctl(0, FIONBIO, [1])                  = 0
recvfrom(0, 0x603600, 516, 0, 0x6035d0, 0x603828) = -1 ENOTSOCK (Socket operation on non-socket)
brk(0)                                  = 0xbe9000
brk(0xc0a000)                           = 0xc0a000
(...)

那么发生了什么?目前还没有人使用 UDP 端口 69,我暂时禁用了防火墙。

答案1

tftpd有多种实现方式;有些只能在inetd守护程序下运行,而另一些则支持独立操作。iputils tftpd在撰写本文时,Linux仅支持在inetd守护进程下运行,因此必须以这种方式运行。其他实现可能有一个-l或一个--listen选项来作为独立的守护进程运行。

相关内容