私のプロジェクトをlocalhostのシンボリックリンクとして設定しようとしましたが、/var/www/html
そこにある通常のファイルまたはディレクトリにアクセスできますが、html
シンボリックリンクを作成するとsome/other/path
403 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
。また、権限を更新しroot
、apache
自分自身を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
変更が反映されていることがわかります。今すぐリクエストすると、もう一度連絡が届きます。
これが将来的に誰かに役立つことを願っています。
これに貢献してくださった皆さんに感謝します。