web-dev-qa-db-ja.com

"シンボリックリンクが許可されていないか、リンクターゲットにアクセスできません" / CentOS 6上のApache

まったく新しいCentOS 6インストールがあり、ドキュメントルートに開発ファイルへのシンボリックリンクがあります。

[root@localhost html]# ls -l
total 4
-rwxrwxrwx. 1 root root  0 Sep 18 20:16 index.html
-rwxrwxrwx. 1 root root 17 Sep 18 20:16 index.php
lrwxrwxrwx. 1 root root 24 Sep 18 20:19 refresh-app -> /home/billy/refresh-app/

私のhttpd.confにはこれがあります:

<Directory "/">
    Options All
    AllowOverride None
    Order allow,deny
    Allow from all
</directory>

シンボリックリンクのターゲットには、Apacheが必要なものを読み取ることができる権限があります。

 [root@localhost billy]# ls -l
total 40 (Some entries were omitted because the list was too long
drwxr-xr-x. 7 billy billy 4096 Sep 18 20:03 refresh-app

/etc/selinux/confを変更して、SELinuxを無効にしてみました。

SELINUX=disabled

しかし、私が何をしようとも、誰かがそのリンクhttp://localhost/refresh-app/にアクセスしようとすると、403 FORBIDDENエラーページが表示され、これは/var/log/httpd/error_logに書き込まれます。

Symbolic link not allowed or link target not accessible

Apacheがシンボリックリンクのターゲットにアクセスできないのはなぜですか?

32
Billy ONeal

問題が見つかりました。結局のところ、Apacheは私がサービスを提供しているディレクトリ/home/billy/refresh-app/だけでなく、その上のすべてのディレクトリ、つまり/home/billy//home、および/へのアクセスも求めています。 (私はなぜだかわかりません...サブディレクトリへのアクセスを誰かに与えることは、そのサブディレクトリより上のすべてに許可を与えることを要求するべきではありません...)

私はそれが.htaccessか何かを探していると思います、またはおそらく* nixがディレクトリトランスバーサルのアクセス許可をどのように扱うかについて奇妙です。

45
Billy ONeal

同様の問題があり、Ubuntu 10で動作していた次の構成がありましたが、Ubuntu 14(Apache 2.4)で動作しなくなりました。

<Directory /var/www/vhosts/example.com/httpdocs>
    Options +FollowSymLinks
</Directory>

これに切り替えると、問題がソートされました(Webサーバーのユーザーがシンボリックリンクに直接アクセスできなかった場合でも)。

<Directory /var/www/vhosts/example.com/httpdocs>
    Options +ExecCGI +FollowSymlinks -SymLinksIfOwnerMatch
</Directory>

私が知ることができるものから、-SymLinksIfOwnerMatch設定し、Apache 2.4の変更と関係がありますが、私は正確な原因を調査しようとしませんでした。

私はそれがopenbase_dir PHPに制限がありますが、そうではありませんでした。

12
icc97

このエラーは、暗号化されたフォルダにリンクしている場合にも発生する可能性があります。

7
cherrysoft

「FollowSymLinks」はhttpd.confで必要なオプションのようです。詳細 こちら 。 htdocsにもルールが必要なようですが、それは必要なオプションです。

4
RobotHumans
Options +FollowSymLinks

これで.htaccessファイルを作成しました(私にシンボリックリンクの前にdirに入れてください)。

2
Codebeat

また、selinuxが強制されているかどうかを確認することもできます。 RedHat/Fedoraでこれを実行します。

getenforce

応答が「Enforcing」の場合、実行することができます

setenforce 0

ブラウザーでURLを再試行してください。

Selinuxを無効にすることがこの問題を解決する最良の方法であるとは言っていませんが、原因を特定するのに役立つ場合があります。

2
botkop

@Billey ONeil @Flion答えられなかった(担当者数が少ない)
ここで私はしなければなりませんでした:
注:エイリアスll = 'ls $ LS_OPTIONS -lh')

root@Bellach:/var/www/html# ll lego
lrwxrwxrwx 1 root root 43 Sep 10 21:21 lego -> /home/DATA/Documents/Chris/Synced/web/lego/

ソースリンクのすべてのディレクトリを見てください

root@Bellach:/var/www/html# ll -d /home/DATA/Documents/Chris/Synced/web/
drwxr-xr-x 9 chris chris 4.0K Sep 12  2017 /home/DATA/Documents/Chris/Synced/web/
root@Bellach:/var/www/html# ll -d /home/DATA/Documents/Chris/Synced/
drwxr-xr-x 20 chris chris 4.0K Mar 27 18:52 /home/DATA/Documents/Chris/Synced/
root@Bellach:/var/www/html# ll -d /home/DATA/Documents/Chris/
drwxr-xr-x 36 chris chris 4.0K Jun 17 23:31 /home/DATA/Documents/Chris/
root@Bellach:/var/www/html# ll -d /home/DATA/Documents/
drwxr-xr-x 21 chris chris 4.0K Aug  7 18:22 /home/DATA/Documents/
root@Bellach:/var/www/html# ll -d /home/DATA/
drwxrwxr-- 10 root users 4.0K Sep 10 11:17 /home/DATA/
root@Bellach:/var/www/html# ll -d /home/
drwxr-xr-x 5 root root 4.0K Sep 10 10:37 /home/

/ home/DATAディレクトリが原因です。
これで修正してください:

root@Bellach:/var/www/html# chmod +x /home/DATA/
root@Bellach:/var/www/html# ll -d /home/DATA/
drwxrwxr-x 10 root users 4.0K Sep 10 11:17 /home/DATA/

修正は即座に行われます-Apacheを再起動する必要はありません。

1
ausinch

私の解決策は、/home/repoという名前のすべてのリポジトリ用の共有フォルダを作成することでした。

次に、自分の家から次のようにシンボリックリンクします:ln -s /home/repo ~/Code so ~/Code/www.xxxx.com/public/home/repo/www.xxxx.com/publicを指します

また、Apache Webルートへのリンク/var/www/html/home/repo/www.xxxx.com/publicを指します

ここで見つかりました: https://github.com/alghanmi/ubuntu-desktop_setup/wiki/Git-Local-Repository-Setup-Guide

一部のsymlink + userグループのアクロバシーを使用すると、複数のユーザー/バージョンをデプロイできます。

0
alo Malbarez

すべての許可を許可し、followsymlinkを許可した後で問題が解決することを確認します。「FollowSymLinksの場合、具体的には、.confファイル内のディレクトリ構造内に存在する必要があります。Apacheの現在のマニュアルから

FollowSymLinksおよびSymLinksIfOwnerMatchオプションは、セクションまたは.htaccessファイルでのみ機能します。

ここからの回答

0
yoni333