Ubuntu 가상 머신에서 FTP 서버를 설정해야 하는데 VSFTPD에서 구성 파일을 구성하는 데 문제가 있습니다.
온라인 튜토리얼에서 선택할 수 있는 다양한 옵션과 다양한 추론이 계속 표시됩니다. 이해가 안 되는 설정을 활성화하지 않고 간단하고 안전한 구성을 원할 뿐입니다.
지금까지 다음 옵션을 사용하기로 선택했습니다./etc/vsftpd.conf
Listen=NO
Anonymous_enable=NO
Local_enable=YES
wrtite_enable=YES
dirmessage_enable=YES
use_localtime=YES
connect_from_port_20=YES
xferlog_enable=YES
ftpd_banner=Welcome to Toms FTP Server.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
내가 이해하는 한 이러한 옵션은 다음을 수행합니다.
독립형 청취 가능, 익명은 인증되지 않은 로그인 거부, 쓰기 가능은 파일 쓰기 허용, dir 메시지는 디렉토리 해석, 로컬 시간은 파일 날짜를 지정하는 데 사용되는 시간, 포트 20은 설명이 필요하며 xferlog는 로그 생성/형식 유형입니까? , 배너는 설명이 필요 없으며 chroot는 사용자가 자신의 디렉터리로 제한되도록 지정하고 해당 디렉터리로 제한되지 않은 사용자는 chroot_list에 나열됩니다.
내가 겪고 있는 문제는 다음과 같이 실제로 액세스 권한이 있는 사용자가 명시되는 사용자 목록에 대한 튜토리얼 참조가 계속 표시된다는 것입니다.
user_sub_token=$USER
local_root=/home/$USER/ftp
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
이것은 내 파일에 존재하지 않으며 수동으로 입력하려고 할 때마다 VSFTPD가 재부팅 시 시작되지 못하게 됩니다. 거의 모든 튜토리얼에서 이것을 보았지만 내 구성 파일에는 포함되어 있지 않습니까? ? ?
내가 잘못 구성하려고 했나요?
보안 VSFTPD 구성을 위한 최소 요구 사항은 무엇입니까?
이 사용자 목록은 더 이상 지원되지 않습니까?
이 사용자 목록이 계속 필요합니까?
해당 파일을 삭제하고 다시 시작해도 오류 코드가 사라지지 않고 서비스가 완전히 중단되며 매번 다시 설치해야 합니다. 오류 코드는 다음과 같습니다.
systemctl status vsftpd.service
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2020-04-26 13:58:09 UTC; 14min ago
Process: 30588 ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf (code=exited, status=2)
Process: 30584 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
Main PID: 30588 (code=exited, status=2)
Apr 26 13:58:09 ubuntu systemd[1]: Starting vsftpd FTP server...
Apr 26 13:58:09 ubuntu systemd[1]: Started vsftpd FTP server.
Apr 26 13:58:09 ubuntu systemd[1]: vsftpd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Apr 26 13:58:09 ubuntu systemd[1]: vsftpd.service: Failed with result 'exit-code'.
답변1
주석을 달거나 삭제 use_localtime
하고 다시 시도하세요.
#use_localtime=YES
답변2
listen=NO
방법다른 것들어오는 네트워크 연결에 대한 수신 대기를 처리합니다. 이는 클래식 inetd
, a xinetd
또는 .socket
단위 일 수 있습니다 systemd
.
주요 요점은 구성할 때 listen=NO
프로세스 가 시작된 모든 것이 즉시 들어오는 연결을 제공하고 해당 연결이 끝나면 시작된 것이 새로운 연결에 대해 새 인스턴스를 시작하기 때문에 종료할 수 있다고 vsftpd
가정한다는 것입니다 . 이렇게 구성하고 간단한 것부터 시작하면 프로세스의 표준 입력 및 출력에 연결된 네트워크 소켓을 제공할 것으로 예상됩니다 .vsftpd
vsftpd
vsftpd
systemctl start vsftpd
vsftpd
systemd
vsftpd
그러나 귀하의 vsftpd.service
장치는 이러한 유형의 소켓 전달(적어도 하나의 라인 StandardInput=socket
과 해당 vsftpd.socket
장치가 필요함) 에 대해 구성되지 않았으므로 vsftpd
프로세스는 단일 양방향 네트워크 소켓 이외의 표준 입력 및 출력을 얻고 실패하며 결과가 표시됩니다. '잘못된 매개변수' 오류가 발생했습니다.
처음부터 시작할 계획이라면 vsftpd
들어오는 FTP 연결을 수신하는 역할을 담당 systemctl start vsftpd.service
하므로 vsftpd
그렇게 구성해야 합니다 listen=YES
.
이를 사용하기로 선택한 경우, userlist_file
한 줄에 하나씩 간단한 사용자 이름 목록이 포함된 파일을 가리켜야 합니다. 경우 userlist_deny=NO
파일에 나열된 사용자는 다음과 같습니다.로그인이 허용된 유일한 사람FTP를 통해. 이 설정을 사용 하면 userlist_deny=YES
사용자 목록 파일에 나열된 사용자는항상 거절당했어, 비밀번호를 묻기 전에도 마찬가지입니다.