萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

解決 vsftpd 「553 Could not create file」錯誤:SELinux 設定指南

在啟用 SELinux 的 Linux 系統(如 CentOS/RHEL)上架設 vsftpd 時,使用者常遇到「553 Could not create file」上傳失敗錯誤。本文說明如何透過調整 SELinux 布林值 allow_ftpd_full_access 快速解決。

問題現象

  • FTP 登入成功,目錄切換正常
  • 上傳檔案時提示 553 Could not create file
  • 本地權限、vsftpd 設定均正確

根因分析

SELinux 預設限制 FTP 服務的完整存取權限。查看相關布林值:

[root@localhost ~]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off   # 關鍵項
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> on
ftpd_connect_db --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off

解決方法

  1. 啟用 allow_ftpd_full_access:
[root@localhost ~]# setsebool allow_ftpd_full_access on
  1. 驗證設定生效:
[root@localhost ~]# getsebool -a | grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> on    # 已開啟
...
  1. 重啟 vsftpd 服務:
[root@localhost ~]# service vsftpd restart
  1. 測試 FTP 上傳,應可正常建立檔案。

永久生效設定

上述設定重啟後會失效,需加入 -P 參數永久生效:

setsebool -P allow_ftpd_full_access on

相關 SELinux FTP 布林值說明

布林值功能建議值
allow_ftpd_full_access允許 FTP 完整讀寫權限on(解決 553 錯誤關鍵)
allow_ftpd_anon_write允許匿名使用者寫入off(安全考量)
ftp_home_dir允許 FTP 存取使用者家目錄on
ftpd_use_passive_mode允許被動模式連線視需求開啟

圖示說明

vsftpd SELinux 設定示意圖

總結

vsftpd 553 錯誤多因 SELinux 限制,啟用 allow_ftpd_full_access 即可解決。生產環境建議搭配 ftp_home_dir=on、ftpd_use_passive_mode=on,並依實際需求決定是否開啟匿名寫入。

copyright © 萬盛學電腦網 all rights reserved