
私はファイル/ディレクトリの権限に関する情報を検索してきましたが、同じ基本原則を探しています。所有者、グループ、およびその他のユーザーに付与される権限を決定する根拠はどこにもありません。正確に誰/何がこのカテゴリに属していますか?それらのどれにも特定の権限を付与または付与しないことはどのような意味を持ちますか?私の懸念は、セキュリティを損なうことなく、すべてが正しく機能していることを確認することです。
たとえば、私は共有ホスティング(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です。または- - あなたが望むなら否定的なすべての入り口と出口。
答え2
いいですね。まず、ファイル権限の基本を見て、具体的なケースを見てみましょう。
特権
基本的な文書権限は次のとおりです。
- アル字型ead - ファイルの内容を読み取る機能を提供します。
- 勝つrite - このファイルに書き込む機能を提供します。
- 金利Xecute - ファイルまたはスクリプトを実行する機能を提供します。
の場合目次名前は同じですが、意味は少し異なります。
- アル字型- ディレクトリ内のファイル名を読み取る機能を提供しますが、それ以上ではありません。
- 勝つ- ディレクトリにファイルを作成したり、既存のファイルに書き込む機能。
- X- ディレクトリ内の特定のファイルの内容を読み取ることができますが、その中にあるファイルを一覧表示することはできません(これを行うには読み取り権限が必要です)。また、このディレクトリに変更(cd)することもできます。
ユーザー、グループ、その他
すべてのファイルとディレクトリには所有者とグループのプロパティがあります。ls -l
コマンドを呼び出すか、FTPクライアントなどのソフトウェアのインジケータを見て確認できます。例を見てみましょう。
-rwxr-xr-- 1 jdoe zeppelins 0 08-29 21:50 example_file
example_file
2008年29月21日21:50に作成され、0バイトの長さのファイルがあります。所有者は名前付きユーザーusername
であり、グループに属しますzeppelins
。
それではファイル権限を見てみましょう-rwxr-xr--
。
- 最初の文字はファイル形式を表します。単一ダッシュは、
-
そのファイルがリンクやディレクトリではなく通常のファイルであることを意味します。 - 次の3つのペアは、
rwx
ユーザーjdoeがファイルを読み取り、書き込み、実行できることを示します。 - 次の
r-x
手段パワーグループメンバーはzeppelins
ファイルを読み込んで実行できますが、変更することはできません。 - 最後に、グループに
r--
属していても、属していないユーザーはファイルを読むことができるだけです。jdoe
zeppelins
今あなたのイベントに戻ります。
WS_FTPを介してログインすると、ログイン時に指定したユーザー名を使用してユーザーとして識別されます。あなたは一部のファイルの所有者になることができますが、必ずしもそうではありません(他の所有者に割り当てられたファイルがある可能性があります)。
Webブラウザはこれらのファイルにアクセスできません。ネットワーク経由でアクセスされます。仕える人、ファイルを読み、その内容をブラウザに提供します。 Webサーバーは同じ名前または同様の名前で実行できますが、
apache
httpd
ホスティングを使用しているかのように自分自身を識別することもできますinetuser
。それ以外の場合はファイルにアクセスします。その他ユーザー。PHPスクリプトは次のようになります。読めるそして書き込み可能修正した人(主に所有者である可能性が高い)読めるしかし、書き込み可能Webサーバー経由。
で編集した単純なPHPスクリプトの場合、
jdoe
Webサーバーがwebserver
その名前で実行されていると仮定すると、適切な権限はです-rwxr-----
。場合によっては、他のユーザーが読む必要があります。この場合、-rwxr--r--
より適切な場合があります。PHPファイルの場合、読み取り権限で十分です。
最良の方法は、迅速なテストを実行することです。特定のファイルに対するグループのすべての権限を削除し、そのファイルに引き続きアクセスできることを確認してください。これは
inetuser
Webサーバーのエイリアスであるため、ファイルにそのグループに対する読み取り権限が必要です。ファイルをアップロードするには、読み取りまたは実行権限はありませんが、書き込み権限を持つ別のディレクトリを作成する必要があります。
答え3
Linuxの権限は、Windowsで使用されるソフトウェアによっては機能しません(サービスは特定の権限を使用して自動的にインストールされます)。 Linuxでは、ファイル/ディレクトリを読み取りまたは実行したいプログラムが特定のユーザーとして実行されますが、これは共有環境では異なる場合があります。
スクリプトに関してWebサーバーを実行しているユーザーは実行権限を持っている必要があります。それ以外の場合、エンドユーザーはスクリプトを表示できますが、実行できません。
一部のWebサーバーはwww-dataユーザーとして実行されますが、これは共有環境なので状況が異なる可能性があるため、プロバイダに連絡して確認する必要があります。
実行中のhttpサーバーを知っていて、シェルアクセス権がある場合は、次のことを実行できます。
ps -ef | grep <server>
最初の列には、サーバーが実行されているユーザーが表示されます。これはおそらくログインしたユーザーと同じです。
共有サーバーには同時に実行しているサーバーが複数ある可能性があるため、どのサーバーが自分のものかを調べる必要があることに注意してください。
使用するFTPクライアントは権限に影響を与えず、ログインしているユーザーによって異なりますが、ログインユーザー名とは異なる場合があります。
この場合、WebブラウザはオブジェクトではなくWebサーバーのみがオブジェクトであり、前述のように独自のユーザーとして実行されます。
経験上、サイトの公開領域では、ユーザー、グループ、およびその他のユーザーにスクリプトとディレクトリに対する実行権限を付与し、他のファイルに対する読み取り権限を付与します。
Webサーバーがディレクトリに新しいファイルを作成することを許可する必要がある場合は、そのディレクトリはサーバーを実行しているユーザーが所有するか、すべてのディレクトリ固定ビット(t)への書き込みアクセス権を持っている必要があります。