ファイルを作成できますが、読み取ることはできません。

ファイルを作成できますが、読み取ることはできません。

私はしばらくLinuxを使用してきましたが、常にrootアクセス権を持っていたので、権限の問題はあまり問題にはなりません。しかし、今はrootアクセス権がないので、狂うようです。

SSH経由でWebサーバーに接続できます。これは私のユーザーにアクセスでき、PHPバックティックを介してそのユーザーにアクセスgabitoptalentroできることを意味します。apache一部のフォルダに問題がありますtmpいいえ /tmp)。ls -l説明する:

drwxrwxrwx  2 gabitoptalentro toptalentro   4096 Jun 15 19:15 tmp

そのフォルダにtouchファイル()を作成しようとするとtouch tmp/QQ機能します(ファイルが生成されます)。しかし、には表示されませんls -l。の項目です。私のSSHアカウント:

-rw-r--r-- 1 apache apache   0 Jun 15 19:37 QQ

したがって、ファイルは実際に属していますが、apache読み取るapacheことはできません。

chownまた、フォルダ全体をコピーしようとしましたが、apache許可されていません(chown: changing ownership of ...: Operation not permitted)。まあ、私のフォルダを他の人が利用できなくなりますか?

apacheそれでは、私がこの状況から離れてそのファイル自体を読むのを助けることができるのを知っていますか?

答え1

一般的なUnixファイル権限またはSELinuxベースの役割の拡張であるアクセス制御リストを使用するようにサーバーを設定できます。

次のようにディレクトリでACLを確認できます。

> getfacl /path/to/your/tmp

すべてがうまくいけば、次のような結果が出るでしょう...

# file: tmp
# owner: apache
# group: apache
user::rw-
group::r--
other::r--

次のような行が見えたら...

user:someotheruser:---
group:someothergroup:---

...ACLを扱っているファイル/ディレクトリです。お分かりのように、これにより特定のユーザーとグループの権限を設定できます。コマンドを使用してこれを変更できます(許可を許可)setfacl。ディレクトリのACLには、予期しない権限で新しいファイルが生成されるようにするさまざまなデフォルト値があります。


これがうまくいかない場合は、SELinuxでロールベースのセキュリティを処理する必要があります。コマンドを実行してくださいgetenforce。強制すると、Apache は HTTP コンテキストのファイルのみを読み込みます。

> /usr/sbin/getenforce
Enforcing

chcontmpディレクトリが必要です(コンテキスト変更)...

> chcon -R -t httpd_sys_content_t /path/to/your/tmp

以下は良いSELinux FAQです。

役に立ったことを願っています!

答え2

新しく作成されたファイルに対する権限はpassですumask。しかし、umaskこの場合は大丈夫です。

-rw-r--r-- 1 apache apache 0 Jun 15 19:37 QQ

フラグ 2、3、4 は所有者の権限です。 rw-これは、Apacheがこれらのファイルを読み書きできることを意味します。

読み書きするときにApacheとしてログインしていることを確認してください。

関連情報