私が知る限り、ファイルには所有者権限、グループ権限、その他のユーザー権限という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は実行できますが、読み書きできません。