web-dev-qa-db-ja.com

ルートが所有するファイルのルートとして権限を変更することはできません

問題は、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を試しました(私はすでにrootですが)。

Sudo chmod 777 filename

chownを試してみました(私は既に所有者ルートですが)。

 Sudo root filename

エラーや警告はまったくありません。

OSはCentOS 6

4
Thomas

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で既存のセキュリティラベルを確認してください)。

semanage を使用して、/path/to/directoryとその内容のラベル付けルールを追加します。

semanage fcontext -a -t httpd_user_rw_content_t '/path/to/directory(/.*)?'

ファイルが別のファイルシステムにある場合は、マウントポイントに適用する context option を使用できます/デフォルトのラベルを上書きします。

5
sebasth