私はファイル/ディレクトリの権限に関する情報を検索してきましたが、同じ基本原則を探しています。所有者、グループ、およびその他のユーザーに付与される権限を決定する根拠はどこにもありません。正確に誰/何がこのカテゴリに属していますか?それらのどれにも特定の権限を付与または付与しないことはどのような意味を持ちますか?私の懸念は、セキュリティを損なうことなく、すべてが正しく機能していることを確認することです。
たとえば、私は共有ホスティング(Linux)で小さなウェブサイトを開発しており、開発/メンテナンスに参加している唯一の人です。視聴者は何もダウンロードできませんが、メンバーはpicmonkey.com API(move_uploaded_fileを使用して実行されたPHPスクリプト)を介して画像をアップロードできます。サイトのファイルはすべて.php、.css、.js、.html、.jpg、および.gifです(フォントに関連する.eot、.svg、.ttf、および.woffファイルもあります)。これらのディレクトリとファイルは、サイトのユーザー名を所有者として、グループ「inetuser」を持ちます。
私の心の中に浮かぶいくつかの質問は次のとおりです。
- WS_FTPを使用してログインすると、私は所有者ですか?
- Webブラウザは「その他」ですか?
- PHPスクリプト自体がこれらのカテゴリの1つに属していますか?
このような状況では、各ファイル/ディレクトリにどのような権限が必要ですか?- .phpファイルを読むことと実行することに違いはありますか?
「inetuser」が誰なのか分からないので、グループに権限を与えないのは正しいですか?そうでない場合(たとえば、
サイトのユーザー名がグループにも使用され、私の開発サイトとは異なるホストにある場合)、
どうすればよいですか?
誰でも私に洞察力を与えることができ、このような質問に答えることができるおすすめの記事や本を提供できればとても感謝します。
ベストアンサー1
権限の概念を理解しているようですが、ユーザー/グループ/その他、さまざまな状況でこれが何を意味するのかによって困難が発生していると思います。
単に、
- ㅏユーザープライベートPOSIXアカウントです。
- ㅏグループ複数のPOSIXアカウントを論理的にグループ化したものです。
ディスク上のファイルには2人の所有者があります。所有者user
対group
所有者。特定のファイルに対してother
これを行うユーザーアカウントはありますか?いいえマッチuser
...でもないうん会員group
。つまり、other
ユーザーの所有者ではないすべてのユーザーそしてグループ所有者のメンバーではありません。
また、各プロセス特定のユーザーID(またはUID)で実行され、1つ以上のグループID(GID)のメンバーです。各プロセスを実行しているユーザーを表示するには、このコマンドps -ef
(LinuxおよびSolaris、OS X、または* BSD)を使用します。ps -ej
apacheとws_ftpもユーザーによって実行されていることがわかります。
プロセスがディスク上のファイルにアクセスしようとすると、次のことが発生します。
UID
プロセスuser
所有者がファイル所有者と一致すると、権限user
が適用されます。- それ以外の
GID
プロセスのいずれかがgroup
ファイルの所有者と一致する場合は、group
権限が適用されます。 - それ以外の場合、
other
権限が適用されます。
お客様の質問に具体的に回答するには:
WS_FTPを使用してログインすると、私は所有者ですか?
技術的にはそうです。常に所有者がいるからです。しかし、これはあなたの定義によって異なります。「私」。
始めたら本物システムのPOSIXユーザーの場合、作成/アクセスするファイルはログインしたユーザーと同じです。匿名でログインすると、作成/アクセスするファイルは次のUIDを持つファイルになります。FTPプロトコル。これftp
にすることもできますnobody
。
Webブラウザは「その他」ですか?
Webブラウザはサーバー上で実行されないため、何もありません。ただし、ブラウザはWebページにアクセスします。仕える人。 Webサーバーは特定のユーザー(WS_FTPと同様)で実行されます。ユーザーはおそらくwww-data
、apache
またはですnobody
。
PHPスクリプト自体がこれらのカテゴリの1つに属していますか?
PHPスクリプトは、Webサーバーのスクリプトエンジンモジュールによって実行されます。 Webサーバーを実行しているのと同じユーザーとして実行されます。
.phpファイルを読むことと実行することに違いはありますか?
はい。読み取りとは、ユーザーがファイルの内容を読み取ることができることを意味します。実行とは、コンテンツが完全なプロセスで実行できることを意味します。
PHPスクリプトはWebサーバーのスクリプトエンジン内で実行されるため(つまり、サーバーのメモリスペースと実行スレッドの一部です)、実行可能にする必要はありません。
「inetuser」が誰なのか分からないので、グループに権限を与えないのは正しいですか?そうでない場合(たとえば、サイトのユーザー名がグループにも使用され、私の開発サイトとは異なるホストにある場合)、どうすればよいですか?
inetuser
あなたと同様に、システムのユーザーアカウントです。それともグループかもしれません。この記事を読んだら、自分でこの質問に答えることができることを願っています。
このような状況では、各ファイル/ディレクトリにどのような権限が必要ですか?
一般的に言えば、データファイルは次のようになります。所有する実際の人間(たとえば、あなた)が使用するユーザーアカウント。つまり、ネットワークコンテンツ属してはいけないApacheユーザー。
- ユーザー権限は、ほぼ常にデータファイルの場合はrw-で、ディレクトリとプログラムの場合はrwxでなければなりません。
- グループ権限は通常、データファイルの場合はr-、ディレクトリ、およびプログラムの場合はrxでなければなりません。グループメンバーがこれらのファイルに書き込むことができるようにするには、rw-とrwxでなければなりません。
- 他の権限は、ほぼ常にデータファイルの場合はr--、ディレクトリおよびプログラムの場合はrxです。または- - あなたが望むなら否定的なすべての入り口と出口。