私はtftpd
(ないアーチで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
デーモンの下での実行のみをサポートしているので、その方法で実行する必要があります。他の実装には、スタンドアロンデーモンとして実行するための1つ-l
以上のオプションがあります。--listen