web-dev-qa-db-ja.com

Apacheはシンボリックリンクであるファイルを開くことができません

私はファイルを持っています:

js/jquery.terminal-src.js: symbolic link to ../../repo/js/jquery.terminal-src.js

そして、以下を使用してブラウザで開こうとすると、

http://localhost/projects/jcubic/terminal/test/js/jquery.terminal-src.js

403エラーが禁止されています、ファイルに権限があります

-rw-rw----. 1 kuba kuba 291604 08-27 22:20 ../../repo/js/jquery.terminal-src.js

apache2はそのファイルを開くことができません。SeLinuxをインストールし、FedoraDistroを使用しています。

私はこれを/var/log/audit/audit.logに持っています

type=AVC msg=audit(1503868547.512:625): avc:  denied  { getattr } for  
pid=519 comm="httpd" path="/home/kuba/projects/jcubic/terminal/test/css/jquery.
terminal-src.css" dev="sda3" ino=26608576 scontext=system_u:system_r:
httpd_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=lnk_file
permissive=0

Apacheユーザーをkubaグループに追加しました。projects/var/www/htmlディレクトリのシンボリックリンクです。他のファイルは、ディレクトリであるシンボリックリンクでさえ、正常に機能しています。

また、/ homeでも各ディレクトリにkubaグループを設定しようとしましたが、機能しませんでした(すべてのディレクトリはすでにkubaグループに属しています)

Apacheでシンボリックリンクファイルを開くには何を設定する必要がありますか?

他の方法がある理由でFedoraにインストールされているのでSeLinuxを無効にしたくありませんか?

5
jcubic

audit2why を使用して、アクセスが拒否された理由を確認できます。また、アクセスを許可するSELinux boolean が存在する場合もあります。

SELinuxブール値httpd_enable_homedirsを使用すると、Apacheがホームディレクトリを読み取ることができます。この場合は十分です。 (ルートとして)setsebool -P httpd_enable_homedirs 1を使用して有効にできます。

SELinuxポリシーを変更する必要がある場合は、 audit2allow を使用して、アクセスを許可するポリシーモジュールを生成できます。

SELinuxルールは、Unixパーミッションの後にチェックされます。 SELinuxルールは、より厳密なアクセス制御ルールを追加するだけであり、既存のファイル権限の制限を緩和することはありません。

ApacheにはFollowSymLinksSymLinksIfOwnerMatchoptions がありますシンボリックリンクの処理方法に影響します。デフォルトではFollowSymlinksが有効になっており、Apacheはシンボリックリンクをたどりますが、これらのオプションは構成ファイルの<Directory>セクションまたは.htaccessファイルで変更できます。

7
sebasth