問題は、私のPHPファイルがブラウザで実行されないことです。ユーザーに権限がないためですread
。
このファイルは「ajax」というディレクトリにあります。
drwxrwxrwx. 2 root root 4096 Sep 13 14:33 ajax
このディレクトリの内容:
-rwxrwxrwx. 1 root root 13199 Sep 13 14:33 getOrderDeliveryDates.php
-rwxrwxrwx. 1 root root 20580 Sep 13 14:33 getParcelShops.php
-rwxrwxrwx. 1 root root 1218 Sep 13 14:33 index.php
-rwxrwxrwx. 1 root root 814 Sep 13 14:33 lang.php
-rwxrwxrwx. 1 root root 6001 Sep 13 14:33 prod_reviews.php
私はrootとしてログインしたと100%確信しています。
[root@accept: nl (MP-git-branch)] $
次のコマンドを使用してもう一度確認してくださいid
。
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
これは私を狂わせる。
sudoを試しました(すでにルートにもかかわらず)。
sudo chmod 777 filename
chownを試しました(すでにルートにもかかわらず)。
sudo root filename
エラーや警告はまったくありません。
オペレーティングシステムはCentOS 6です。
答え1
CentOS(およびその他のFedora / RHEL派生製品)は、SELinuxと呼ばれる追加のセキュリティメカニズムを有効にします。ほとんどのシステムデーモンに追加の制限を適用します。これらの追加の制限は、通常のUNIX権限の後に確認されます。
デフォルト以外の設定では、SELinuxを調整する必要があることがよくあります。ファイルには、SELinux がセキュリティポリシーを適用するために使用する特定のセキュリティラベルが含まれています。問題が特定のファイルでのみ発生する場合は、問題のあるファイルのSELinuxラベルを修正する必要があります。使用chcon
--reference=
ファイルからタグをコピーするオプションがあります。これにより、問題のファイルに同じタグが適用されます。
chcon --reference=<path to working file> <path to not working file(s)>
ファイルが非標準の場所にある場合は、ファイルタグデータベースにルールを追加する必要があります。これにより、次にファイルシステムのラベルを再指定または使用するときにrestorecon
問題は発生しません。ラベルを選択適切にまたは、すでに適用されているラベルを使用します(既存のセキュリティラベルチェックを使用ls -lZ
)。
次のコマンドを使用して、タグルール/path/to/directory
とそのコンテンツを追加します。semanage
:
semanage fcontext -a -t httpd_user_rw_content_t '/path/to/directory(/.*)?'
ファイルが別のファイルシステムにある場合は、次のものを使用できます。context
オプションデフォルトのラベルを適用/オーバーライドするためにマウントポイントに使用されます。