ユーザー「root」とグループ「root」がファイルを所有していることはどういう意味ですか?

ユーザー「root」とグループ「root」がファイルを所有していることはどういう意味ですか?

rootユーザーとグループが所有する次のファイルがあるとしますroot

-rw-r----- 1 root root 54 2017-12-18 04:21 1.txt

fsuidそして、aがrootAが以外のグループであるfsgidプロセスがあるとしますroot

ファイルに対するユーザー権限は、所有者ユーザーがファイルを読み書きできるがファイルを実行できないことを意味します。ただし、プロセスがあるため、ファイルに対するユーザー権限がプロセスに適用されないため、プロセスはファイルを読み書きして実行できると思いfsuidますroot

ここでは、a以外のユーザーであるプロセスがあるとしますfsgidrootfsuidroot

ファイルに対するグループ権限は、所有者グループがファイルを読み取ることはできますが、ファイルを書き込んで実行することはできません。この場合、プロセスはファイルへのフルアクセス権を持たず、ファイルのグループ権限のみがプロセスに適用されるようです。そうですか?

答え1

ルールは次のとおりです。

  • ユーザーがroot(UID = 0)の場合は、フルアクセスを許可します。
  • ユーザーが所有者の場合は、権限に所有者三重項を使用します。
  • ユーザーが所有者ではなくグループに属している場合は、権限にグループ三重項を使用します。
  • ユーザーが所有者でもグループのメンバーでもない場合は、権限として other-triplet を使用します。

したがって、ルートの場合には重要ではありません。ただし、他のユーザーの場合は、最も具体的な権限トリプルが適用されます。したがって、ユーザーの例では、ユーザーがグループの所有者でありメンバーである場合(グループトリプルではなく)、所有者トリプルが使用されます。したがって、グループに読み取りと書き込みの両方の権限が付与されているが所有者に読み取り権限のみが付与されている場合、所有者のみがファイルを読み取ることができます。グループメンバーであっても同様です。しなければならない彼も書かせてください。グループの他の(所有者ではない)メンバーはファイルを読み書きできます。

ファイル所有者は、必要に応じていつでも自分にさらに権限を追加できます。時にはプログラムがこれを行うことがあります。たとえば、書き込み禁止ファイルがある場合(たとえば、権限r--r-----)、一部の編集者はとにかくそのファイルに書き込むことができます(通常は確認後)。エディタはユーザーと同じように機能し、ユーザーがファイルを所有して権限を変更できる場合、エディタは書き込み禁止を解除し、ユーザーがファイルを保存できるようにすることができます。

+++

これは、rootユーザーがファイルを所有し、ファイルを読み書きする権限を持っていることを意味します。所有者(ルート)はファイルの権限を変更することもできます。ルートグループのメンバーが読むことを許可します。他のユーザーはファイルを読み書きできます。 (テキストファイルなので実行することは意味がないかもしれません。)

Linux システムの多くのファイルでは、root ユーザーが所有者で、root グループがグループです。伝統的に、さまざまなシステムユーザーとシステムグループ(bin、sys、proc、Operatorなど)は、ルート以外の多くのファイルを所有しています。たとえば、バイナリファイル(実行可能プログラム)は通常、bin-userおよび/またはbin-groupを所有権として持ちます(たとえば、bin:binまたはroot:bin)。

ただし、rootとして実行する必要がある実行可能ファイルは例外です。そのファイルはrootユーザーが所有する必要があります。通常、プログラムは、プログラムを実行しているユーザーの許可を得て実行されます。コマンドを実行すると、そのコマンドlsは自分の権限で実行されるため、リストが許可されていないディレクトリ(たとえば、他のユーザーのディレクトリ)は表示できません。一方、コマンドがroot権限で実行されると、システム全体にアクセスできます(これがほとんどの実行可能ファイルでこれを実行したくない理由です)。

良い例は、passwdパスワードを変更できるコマンドです。ルートとして実行され、すべてのユーザーに提供されます。限られたアプローチユーザーとパスワードのデータベースを保存するために使用されるファイル。

rwsr-xr-x ルート:root /usr/bin/passwd

s = x + S、xは実行権限、Sは所有者またはグループトリプルに対して設定されているかどうかに基づいて所有者またはグループとして実行されます。

したがって、rootユーザーは所有者であり、読み取り、書き込み、および実行権限を持ちます。 root-groupは読み取りおよび実行権限を持つグループです。他のユーザーも読み取りおよび実行権限を取得しました。また、実行ファイルは所有者の権限で実行されます。 root - 所有者の三重項(u + s)の「s」のおかげで、それを実行するユーザーの権限がありません(通常です)。

今回はBSD(UNIXオペレーティングシステム)のもう一つの例です。

rws-x--- ルート:ホイール /bin/su

これは、実行可能ファイルがsu常に所有者(ルート)として実行されることを意味します。 rootユーザーはこれを読み、書き込み、実行できます。ホイールグループのメンバーはこれを実行できますが、読み取ることはできません(コピーなど)。そして、他のユーザーはそれを読み書きすることはできません。 (このコマンドはsuLinuxにもありますが、ここではすべてのユーザーが実行できますが、まだrootとして実行されます。)

他のプログラムも特定のシステムユーザー(およびグループ)で実行できます。たとえば、apacheWebサーバーはしばしばwww-data-user(およびwww-data-group)として実行されます。これにより、属していない権限が不足して破損しても大きなダメージを与えません。

答え2

2番目のポイントは正しいです。グループメンバーはrootファイルを読み取ることができますが、書き込みまたは実行することはできません。

最初のポイントが正しくありません。ユーザーもrootファイルを実行できません。root実行可能な権限を簡単に変更できますが、その手順を実行するまで実際には実行できません。

注意すべき重要な注意点は、シェルスクリプトや他のプレーンテキストスクリプトの場合は、実行ビットを設定せずに実行できるように「インポート」することができることです。この例では、ファイルの内容が1.txt実際にbashスクリプトの場合、0650権限がある場合でもbash 1.txtファイル内でコマンドを実行して実行でき、スクリプトを効果的に実行し、実行権限ビットをバイパスするように見えることがあります。

警告はここで見ることができます。

# ./myecho
Hi there!
# chmod -x myecho
# ./myecho
-bash: ./myecho: Permission denied
# sh myecho
Hi there!

関連情報