Linux初心者のわたくしが陥ったSELinuxに係る設定ミスによる403エラーについて説明いたします。

 Trouble

  • Googleアドセンスの申請準備の際、ドキュメントルートディレクトリにads.txtを設置しました
  • ブラウザで同ファイルを確認するため、http://f-labs.jp/ads.txtにアクセスすると、403 Forbiddenエラーの警告が表示され、内容を確認できません
    2025 09 15 08 45 17 01

cause

  • 当サイトはSELinux: Enforcingで運用しています
  • 作成したads.txtにおけるSELinuxコンテキスト タイプの設定に誤りがあり、アクセス制限により閲覧不可となりました
    • 誤: user_home_t
    • 正: httpd_sys_content_t
  • ads.txtをターミナルから作成すれば問題なかったのですが、次の手順で設置したことが不適切なタイプとなったことの原因と思われます
  •  今にして思えば、なんとも無駄な手順を踏んだものです
    1.  ローカルPCにてads.txtを作成
    2. ads.txtをFTPソフトでユーザーのホームディレクトリにアップロード
    3. ターミナルにてドキュメントルートディレクトリに移動
    4. ターミナルにて所有者:所有グループをapache:apacheに変更

Improvement

  • chconコマンドにて正しいタイプに修正します
    # 修正前のコンテキストの確認
    $ ls -laZ /hoge/hoge/
    -rw-r--r--.  1 apache apache unconfined_u:object_r:user_home_t:s0                58 Sep 13 17:19 ads.txt
    # コンテキストを修正
    $ sudo chcon -t httpd_sys_content_t /hoge/hoge/html/ads.txt
    # 修正後のコンテキストの確認
    $ ls -laZ /hoge/hoge/
    -rw-r--r--.  1 apache apache unconfined_u:object_r:httpd_sys_content_t:s0        58 Sep 13 17:19 ads.txt
    
  • ブラウザでの表示です
    2025 09 15 08 45 17 02
  • リンクはこちらです

Lessons Learned

  • わたくしのようなLinux初心者とりわけSELinux初心者は、ファイル確認の際SELinuxコンテキストも含めましょう
    $ ls -laZ
  • -l: 長いフォーマットで表示します
  • -a: ドットファイル(隠しファイル)も表示します
  • -Z: SELinuxセキュリティコンテキストを表示します

Digression

Reference