Apache 2.4はシンボリックリンクに従わずに403 Forbiddenを提供しますか?

Apache 2.4はシンボリックリンクに従わずに403 Forbiddenを提供しますか?

私のプロジェクトをlocalhostのシンボリックリンクとして設定しようとしましたが、/var/www/htmlそこにある通常のファイルまたはディレクトリにアクセスできますが、htmlシンボリックリンクを作成するとsome/other/path403 Forbiddenが表示され、error_log次のように表示されますAH00037: Symbolic link not allowed or link target not accessible: /var/www/html/path/to/project

今ここと他のStackExchangeサイトをかなり広く検索しましたが、答えはありません。httpd.conf Directoryタグについて読みましIndexes FollowSymlinksたが、デフォルト設定もあります/var/www/html。また、権限を更新しrootapache自分自身をuserシンボリックリンク所有者であり、実際のディレクトリまたはファイル所有者として使用してみましたが、何も機能しないようです。

私も.htaccessこれを含む実際のプロジェクトディレクトリにファイルを配置しました。

    Options Indexes

これが必要かどうかわかりません。これは私が試したソリューションのほんの一部です。

実行する必要がある他のオプションがある場合は重複して表示される可能性があると思いますが、この質問に対する回答を検索して他の提案に従ったので、教えてください。

ありがとう

システム

Fedora 32があり、デフォルトでApache httpdがサービスとして実行されています。

編集する:

コメントで述べたように、SELinuxを確認する必要があり、次のように設定しました。龍仁モードを実行しましたが、何も変更されませんでした。それでも403 Forbiddenです。

ベストアンサー1

いいね、コメントして答えを見つけてくれた皆さんに感謝します。最初にチェックする必要があるのは、私がこの構造を持ってxいるかのようにシンボリックリンクを指す場所ですべてのディレクトリが実行されていることを確認することです。他人に対する権限の実行/var/www/html/project -> /home/user/Documents/project/home/user

ls -l /home

あなたの出力は

drwx--x--x. user user 4.0K user

これはシンボリックリンクされたディレクトリまでのすべてのディレクトリに適用されます/var/www/html

権限を確認し、httpd.conf使用中であることを確認した後SELinuxそしてアクティブ実装するモデル。

sestatus

SELinuxが実行されているかどうか、どのモードになっているかを知らせます。

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      32

これが私のコンピュータに見える姿です。インストールされていない場合、コマンドが見つかりませんか?

したがって、これは主にSELinuxの問題です。正しい権限が設定されると、誰かがアクセスできないはずの項目にアクセスしているというlocalhost要求について警告が表示されます。その後、必要なポリシーを適用する必要があります。私はhttpd読んだディレクトリで許可する必要がありました。projectそこで解決策を得ました。ここ。しかし、ファイルを生成するためのものなので、適用された内容を先に確認して/var/www/html命令を修正しました。

ls -lZ /var/www
drwxr-xr-x. 3 root root system_u:object_r:httpd_sys_content_t:s0 00:00 html

したがって、httpd_sys_content_tあなたのディレクトリにこれが必要です。

sudo semanage fcontext -a -t httpd_sys_content_t "/home/user/Documents/project(/.*)?"

(/.*)?このパスの後のエントリにもこのタグを適用する必要があることを意味します。

その後、SELinuxに新しい設定を適用しました。

sudo restorecon -R project/

それでは確認してください

ls -lZ /var/www/html/project/
total 4
-rwxr-xr-x. 1 user user unconfined_u:object_r:httpd_sys_content_t:s0 35 00:00 index.php

変更が反映されていることがわかります。今すぐリクエストすると、もう一度連絡が届きます。

これが将来的に誰かに役立つことを願っています。

これに貢献してくださった皆さんに感謝します。

おすすめ記事