萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 病毒防護

Fedora Core 3 SELinux 導致 PHP 文件寫入失敗,關閉 SELinux 保護級別解決權限拒絕

現象

PHP 腳本嘗試在 Web 目錄創建/寫入文件(如計數器 count),報錯:

Warning: fopen(count): failed to open stream: Permission denied in /var/www/html/count.php on line 4

將目錄權限設為 777 仍無效。

根因

Fedora Core 3 引入 SELinux 強制訪問控制,預設策略僅允許 Apache 用戶在 /tmp 目錄進行文件寫入操作,其他目錄被強制拒絕(即使 DAC 權限為 777)。

解決步驟(圖形界面)

  1. 打開:應用程式 → 系統設置 → 安全級別
  2. 在「安全級別」對話框中,取消勾選「啟用 SELinux」 或將其設置為「寬容」/「禁用」模式。
  3. 確定修改。
  4. 重啟防火牆與 Apache 服務:
    service iptables restart
    service httpd restart
  5. 再次運行 PHP 腳本,文件寫入恢復正常。

最佳實踐建議

  • 生產環境不建議直接關閉 SELinux,應編寫自定義策略模組(audit2allow 分析 /var/log/audit/audit.log 生成 .te 文件編譯載入),精準放行所需權限。
  • 若確需臨時關閉,事後務必重新啟用並補全策略。
  • 將 Web 應用寫入目錄遷移至 /var/www/html/data 等專用目錄,並為其創建恰當的 SELinux 上下文(chcon -R -t httpd_sys_rw_content_t /path)。
copyright © 萬盛學電腦網 all rights reserved