CentOS 7 VSFTPD 연결 시 디렉터리 내용이 나열되지 않음

CentOS 7 VSFTPD 연결 시 디렉터리 내용이 나열되지 않음

운영 체제: VSFTPD가 포함된 CentOS 7, 방화벽이 일시적으로 꺼짐

클라이언트: 파일질라

VSFTPD 구성 설정:

사용된[root@Turbo ~]# vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Welcome to the DataMover FTP service.
chroot_local_user=YES
local_root=/home/ftp-docs
listen=YES
listen_ipv6=NO
pasv_enable=YES
pasv_max_port=65534
pasv_min_port=1024
pasv_address=192.168.20.88
hide_file=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

FileZilla 설정:

Logon Type          Normal
Port                21
Server Type         Default (tried UNIX)
Transfer Mode       Passive (tried Active)
Charset             Auto detect
Encryption          Only use plain FTP (insecure)

나는 전송 모드와 서버 유형(UNIX와 자동 감지 사이)의 모든 조합을 시도했지만 소용이 없었습니다. CentOS 시스템에 TLS를 추가하지 않았기 때문에 일반 FTP를 사용하고 있습니다. 나는 한동안 이 프로토콜을 가지고 있었지만 그것이 없었기 때문에 일반 FTP와 협상하는 데 시간을 낭비하고 있었습니다.

Filezilla의 출력은 다음과 같습니다.

Status: Disconnected from server
Status: Connecting to 192.168.20.88:21...
Status: Connection established, waiting for welcome message...
Status: Connected
Status: Retrieving directory listing...
Status: Directory listing of "/" successful

재미있는 점은 환영 배너가 보이지 않는다는 것입니다. Filezilla 로그에 "환영 메시지를 기다리는 중..."이라고 적혀 있기 때문에 저는 이것을 볼 것이라고 반쯤 예상했습니다.

환영 메시지와 마찬가지로 이 디렉토리의 내용은 비어 있습니다.

사용자는 문제가 없습니다. 사용자로 로그인하여 작업을 수행 cd ~하고 디렉터리에 대한 액세스 권한이 있는지 확인할 수 있었습니다 /home/ftp-docs.

로그 파일에는 대부분 빈 내용이 표시됩니다.

/var/로그/메시지:

Dec 11 09:23:35 Turbo systemd: Reloading.
Dec 11 09:23:35 Turbo systemd: [/usr/lib/systemd/system/lvm2-lvmetad.socket:9] Unknown lvalue 'RemoveOnStop' in section 'Socket'
Dec 11 09:23:35 Turbo systemd: [/usr/lib/systemd/system/dm-event.socket:10] Unknown lvalue 'RemoveOnStop' in section 'Socket'
Dec 11 09:23:36 Turbo avahi-daemon[1227]: Invalid response packet from host 192.168.20.74.
Dec 11 09:23:37 Turbo avahi-daemon[1227]: Invalid response packet from host 192.168.20.74.
Dec 11 09:23:37 Turbo avahi-daemon[1227]: Invalid response packet from host 192.168.20.74.
Dec 11 09:23:40 Turbo systemd: Stopping Vsftpd ftp daemon...
Dec 11 09:23:40 Turbo systemd: Stopped Vsftpd ftp daemon.
Dec 11 09:23:45 Turbo systemd: Starting Vsftpd ftp daemon...
Dec 11 09:23:45 Turbo systemd: Started Vsftpd ftp daemon.

오늘 모든 테스트를 마친 후 /var/log/xferlog가 비어 있는 것으로 나타납니다.

Tue Dec  8 15:48:35 2015 1 ::ffff:192.168.20.74 0 /CreativeCloudSet-Up.exe b _ i r datamover ftp 0 * i
~                                                                                                                                                                                                   

서버의 명령줄도 괜찮습니다.

[root@Turbo ~]# systemctl daemon-reload
[root@Turbo ~]# systemctl stop vsftpd
[root@Turbo ~]# systemctl start vsftpd
[root@Turbo ~]# vi /var/log/messages
[root@Turbo ~]# vi /var/log/xferlog 
[root@Turbo ~]# 

완전성을 위해 홈 디렉토리의 내용은 괜찮습니다.

[root@Turbo ~]# ls -l /home
total 4
drwxr-xr-x.  3 root ftp-users   35 Dec  9 16:29 ftp-docs
...
[root@Turbo ~]# 
[root@Turbo ~]# cd /home/ftp-docs/
[root@Turbo ftp-docs]# ls -l
total 4
-rwxr--r--. 1 datamover root 13 Dec  8 15:47 smurfit.txt
drwxr--r--. 2 root      root  6 Dec  9 16:29 sub1
[root@Turbo ftp-docs]# 

나는 꽤 많은 웹 페이지를 정독했기 때문에 hide_file구성 파일에 4개의 수동 항목을 추가했습니다 vsftpd.conf. 다른 사람들은 연결하는 데 문제가 있습니다. 그것은 내 문제가 아니며 내 문제가 아닙니다. 저는 잘 연결되어 있어요. 나는 아무것도 볼 수 없습니다.

현재 방화벽이 비활성화되어 있지만 iptables설정은 다음과 같습니다.

vi /etc/sysconfig/iptables

# FTP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1024:65535 -j ACCEPT

CentOS 7은 iptables가 아닌 FirewallD를 사용한다는 내용을 읽었지만 보시다시피 다음과 같습니다.

[root@Turbo ~]# firewall-cmd --get-active-zones
FirewallD is not running
[root@Turbo ~]# 

내가 정독한 몇 가지 리소스는 다음과 같습니다.

내가 놓친 것에 대한 아이디어가 있나요?

답변1

이 문제에 대한 해결책은 매우 명확하지 않습니다. 올바른 검색어를 알고(지금은 분명하지만 지난 며칠 동안은 그렇지 않음) 상황을 더 잘 이해함에 따라 조각이 제자리에 놓이기 시작합니다. "VSFTPD 디렉터리 내용이 나열되지 않음"에 대한 많은 게시물은 수동 및 활성, 포트, 권한, hide_file 사용, local_root 등에 대해 끝없이 이야기합니다.

장황한 로깅을 얻을 수 있는 방법이나 "vsftpd 장황한 로깅"이 내 키워드가 되어야 한다고 스스로에게 물었을 때 진정한 깨달음이 왔습니다. 이 아이디어와 그 구현은 어머니의 어깨에 타격을 입혔다고만 말하면 충분합니다. SELinux의 존재에 대해 배웠습니다. 이것은 부분적으로 나의 고통에 기여했습니다.

이 기사는,FTPS 및 SELinux를 지원하는 CentOS에서 VSFTPD 설치 및 구성, 내 문제를 해결하기 위해 많은 노력을 기울였습니다.

이 지침에 따라 mypol.* 파일이 여러 개 생성되었으나 이를 삭제했습니다. 이렇게 하면 smurfs.txt에 액세스할 수 있지만 sub1에는 여전히 문제가 있습니다.

sub1의 소유자가 datamover가 아닌 루트라는 사실을 확인하여 문제를 해결했습니다(왜 그렇게 오래 걸렸나요?). 소유권(권한)을 고정하면 폴더에도 액세스할 수 있습니다.

방금 두 파일을 모두 다운로드하려고 시도했는데 작동했습니다.

여전히 업로드할 수 없으며 /home/ftp-docs/루트를 폴더 소유자 및 755 권한으로 유지해야 합니다. 편차가 발생하면 FTP 작동이 중지됩니다. 하지만 sub1에는 업로드할 수 있습니다. 따라서 해결 방법(해결 방법)은 간단히 하위 폴더에 업로드하는 것입니다.

작업을 수행하려면 마지막에 다음을 수행해야 했습니다. 여기서 /mnt/raid1은 이 예에서 FTP 클라이언트의 홈 디렉터리입니다. (저는 /home/ftp-docs/를 사용했습니다.)

# /sbin/restorecon -v /mnt/raid1
# setsebool -P ftpd_full_access 1

내가 사용하는 유용한 링크:

관련 정보