我正在尝试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
选项来作为独立的守护进程运行。