ファイルの権限、所有者、およびグループが与えられた場合、特定のユーザーがファイルを読み書きすることができるかどうかを決定するアルゴリズムは何ですか? [コピー]

ファイルの権限、所有者、およびグループが与えられた場合、特定のユーザーがファイルを読み書きすることができるかどうかを決定するアルゴリズムは何ですか? [コピー]

私が知る限り、ファイルには所有者権限、グループ権限、その他のユーザー権限という3つの権限セットがあります。また、ファイルは所有者とグループに割り当てられます。

Linuxはこれらすべての情報をどのように組み合わせて、ファイルに対する特定のユーザーの権限を実際に決定しますか?

たとえば、ファイルが次のようになっているとします。

---読み書き---x

つまり、所有者は権限がなく、グループは読み書き可能で、他のグループは実行のみ可能です。

「Joe」というユーザーがこのファイルにアクセスします。 Joeが属するグループとJoeがファイルの所有者であるかどうかによって、Joeはこのファイルで何ができますか?ファイルxは誰にとっても設定されているため、ファイルを実行できます。ただし、「Joe」が所有者の場合、x所有者は禁止します。何が優先ですか?

答え1

Linux権限は相互に排他的です。したがって、所有者権限は所有者にのみ適用され、グループ権限は所有者以外のグループのすべての人に適用され、他の権限はグループと所有者以外の人に適用されます。ファイルにアクセスしようとしているプロセスのUIDとGIDに応じて、これらの権限の1つだけが使用されます。

あなたの場合、Joeがファイルの所有者である場合、彼は自分が属しているグループに関係なく、何もしません。
Joeが所有者ではなくグループに属している場合、読み取りと書き込みは可能ですが、実行することはできません。
Joe は、所有者でもグループの一部でもない場合にのみ実行できます。

答え2

上記のDmitry Grigoryevの答えは正しいです。ニーモニックとして一般的に「左がより広い」権限が表示される理由は次のとおりです。あなたGああ。コモンモードは755、644、600です。たとえば、所有者を拒否し、グループを許可することはまれです。私はあなたの061が実際に使用されているのを見たことがないと確信しています。

答え3

アルゴリズムは次のとおりです。

  • ファイルの所有者の場合、所有者権限が適用されます。
  • それ以外のファイルが属するグループに属している場合は、グループ権限が適用されます。
  • それ以外の場合、ファイルシステムにACLが有効であり、ユーザーを参照するACLエントリがある場合は、そのエントリが適用されます。
  • それ以外の場合は、「その他」権限が適用されます。

あなたの例では、Joeがファイルの所有者である場合、彼は何もできません。ファイルが Joe のグループに属している場合、Joe は読み書きできますが、実行できません。どちらも真でない限り、Joeは実行できますが、読み書きできません。

関連情報