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

関連情報