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

相关内容