tftp - 오류 코드 1: 파일을 찾을 수 없음

tftp - 오류 코드 1: 파일을 찾을 수 없음

파일을 가져오고 넣으려면 올바른 tftp 구문이 필요합니다. 내 궁극적인 목표는 busybox tftp를 사용하는 것입니다(두 번째 질문이어야 합니다). 하지만 로컬 Ubuntu tftp 클라이언트로 테스트하려고 해도 실패합니다.

아래에서 볼 수 있듯이 ftp문제는 없습니다 tftp. 문제 만 있을 뿐입니다. 이것은 루프백 IP이므로 iptables와 관련되어서는 안 됩니다(다시 말하지만 ftp문제 없습니다). 잠재적인 긴 경로 문제를 방지하기 위해 테스트에는 홈 디렉터리만 사용했습니다.

xb@dnxb:/tmp$ grep anon_root /etc/vsftpd.conf
anon_root=/home/xiaobai/
xb@dnxb:/tmp$ cat /home/xiaobai/haha
7
xb@dnxb:/tmp$ ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 3.0.3)
Name (127.0.0.1:xiaobai): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get haha
local: haha remote: haha
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for haha (2 bytes).
226 Transfer complete.
2 bytes received in 0.00 secs (6.5541 kB/s)
ftp> 221 Goodbye.
xb@dnxb:/tmp$ tftp 127.0.0.1
tftp> get haha
Error code 1: File not found
tftp> get /home/xiaobai/haha
Error code 1: File not found
tftp> get /home/xiaobai/haha output
Error code 1: File not found
tftp> put /home/xiaobai/haha        
Error code 1: File not found
tftp> put haha
Error code 1: File not found
tftp> xb@dnxb:/tmp$ dpkg-query -W -f='${Description}\n\n${Homepage}\nMaintainer: ${Maintainer}\n\n' tftp
Trivial file transfer protocol client
 Tftp is the user interface to the Internet TFTP (Trivial File Transfer
 Protocol), which allows users to transfer files to and from a remote machine.
 The remote host may be specified on the command line, in which case tftp uses
 host as the default host for future transfers.

http://www.hcs.harvard.edu/~dholland/computers/netkit.html
Maintainer: Ubuntu Developers <[email protected]>

xb@dnxb:/tmp$

그럼 난 따라가이 답변:

xb@dnxb:/tmp$ tftp -v 127.0.0.1 -c get haha
usage: tftp host-name [port]
tftp> xb@dnxb:/tmp$ 
xb@dnxb:/tmp$ tftp -v 127.0.0.1 -c get /home/xiaobai/haha
usage: tftp host-name [port]
tftp> xb@dnxb:/tmp$ 
xb@dnxb:/tmp$ tftp -v 127.0.0.1 -c put haha
usage: tftp host-name [port]
tftp> xb@dnxb:/tmp$ tftp -v 127.0.0.1 -c put /home/xiaobai/haha
usage: tftp host-name [port]
tftp> ^F
?Invalid command
tftp> xb@dnxb:/tmp$ 
xb@dnxb:/tmp$ 

그리고이 답변(댓글을 달거나 댓글을 달지 않아도 아무런 효과가 없는 것 같아서 service vsftpd restart편집 후에 이렇게 했습니다):

xb@dnxb:/tmp$ grep server_args /etc/xinetd.conf 
# server_args = -c -s /tftpboot
xb@dnxb:/tmp$ 

누군가 다른 옵션이 있는 busybox tftp에 대해 답변할 수 있다면 더 좋을 것입니다.

# busybox tftp                                    
BusyBox v1.22.1 bionic (2017-11-04 12:54 +0800) multi-call binary.

Usage: tftp [OPTIONS] HOST [PORT]

Transfer a file from/to tftp server

        -l FILE Local FILE
        -r FILE Remote FILE
        -g      Get file
        -p      Put file

답변1

tftp는 일반적으로 /tftpboot 디렉토리로 제한되며 사용자의 홈 디렉토리에서 무언가를 가져올 수 있기를 원하지 않습니다.

또한 파일 권한을 확인하십시오. IIRC(오랜만입니다). tftp는 인증되지 않은 파일이므로 전 세계에서 읽을 수 있어야 하기 때문입니다.

관련 정보