vsftpd 사용자 정의 익명 루트 폴더

vsftpd 사용자 정의 익명 루트 폴더

익명 사용자를 위해 vsftpd가 공유하는 기본 폴더는 /var/ftp입니다. 이것은 훌륭하게 작동합니다. 이제 다른 폴더를 공유하고 싶습니다. /etc/vsftpd/vsftpd.conf에 다음 줄을 추가했습니다.

anon_root=/data/downloads/

그러나 이것은 작동하지 않습니다. 이전에 연결할 수 있었던 클라이언트는 이제 전혀 연결할 수 없습니다. 내가 무엇을 놓치고 있나요?

로그에는 아무 것도 표시되지 않고 일부 클라이언트가 연결되어 있다는 것만 표시됩니다. 저는 Fedora 서버에서 실행 중이므로 SELinux를 사용합니다. 실제로 /data는 다른 파티션의 마운트 지점입니다.

음, SELinux가 범인입니다. 허용 모드에서는 문제가 없습니다.

$ sudo ausearch -ts recent -m avc
----
time->Wed Dec 21 17:22:59 2022
type=AVC msg=audit(1671664979.645:273): avc:  denied  { search } for  pid=1163 comm="vsftpd" name="/" dev="dm-1" ino=128 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:unlabeled_t:s0 tclass=dir permissive=1
----
time->Wed Dec 21 17:23:01 2022
type=AVC msg=audit(1671664981.026:274): avc:  denied  { search } for  pid=1162 comm="vsftpd" name="downloads" dev="dm-1" ino=131 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:unlabeled_t:s0 tclass=dir permissive=1
----
time->Wed Dec 21 17:23:01 2022
type=AVC msg=audit(1671664981.179:275): avc:  denied  { read } for  pid=1162 comm="vsftpd" name="downloads" dev="dm-1" ino=131 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:unlabeled_t:s0 tclass=dir permissive=1
----
time->Wed Dec 21 17:23:01 2022
type=AVC msg=audit(1671664981.179:276): avc:  denied  { open } for  pid=1162 comm="vsftpd" path="/" dev="dm-1" ino=131 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:unlabeled_t:s0 tclass=dir permissive=1
----
time->Wed Dec 21 17:23:01 2022
type=AVC msg=audit(1671664981.179:277): avc:  denied  { getattr } for  pid=1162 comm="vsftpd" path="/" dev="dm-1" ino=131 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:unlabeled_t:s0 tclass=dir permissive=1
----
time->Wed Dec 21 17:23:01 2022
type=AVC msg=audit(1671664981.448:278): avc:  denied  { getattr } for  pid=1167 comm="vsftpd" path=2F54726F6C6C20283230323229205B31303830705D205B5745425269705D205B352E315D205B5954532E4D585D2F7777772E5954532E4D582E6A7067 dev="dm-1" ino=134 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:unlabeled_t:s0 tclass=file permissive=1

답변1

SELinux가 파일 시스템에 대한 액세스를 차단하고 있습니다. 이는 기본적으로 공유되지 않는 경로를 공유할 때 올바른 동작입니다.

디렉터리에 올바른 SELinux 컨텍스트를 제공하세요.

# sudo semanage fcontext -a -t public_content_rw_t /data/downloads/
# sudo restorecon -Rv /data/downloads/

VSFTPD가 시스템의 모든 파일에 액세스하도록 허용하려면(물론 VSFTPD 구성 및 올바른 FS 액세스 권한에 따라) 다음 명령을 실행하여 적절한 SELinux 부울 값을 설정하십시오.

# sudo setsebool -P ftpd_full_access 1

관련 정보