私が理解したのは、Unixシステムのユーザーは複数のグループに属することができ、そのグループの1つがそのユーザーの基本グループになることです。他のグループは補足グループになります。これらすべて ユーザー/グループインフラ/etc/group
文書化を促進する/etc/passwd
。
ユーザーのグループ権限は、アクティブなグループによって完全に決定され、newgrp
コマンドで変更できるようになりました。ログイン時に/etc/passwd
アクティブなグループは、ファイルで定義されたデフォルトのグループです。それでは、ユーザーに複数の補助グループを許可しながら、デザイナーが単一のアクティブグループの概念を選択した根本的な理由は何ですか?すべてのグループが同時に活動している場合、どのような問題が発生しますか?
答え1
答え2
1つの理由:ファイルが作成されると、ファイルは1つのグループにのみ属することができ、ファイルが作成されるとグループは指定されません。したがって、単一のアクティブグループという概念が必要です。
答え3
Q1:それでは、質問は、デザイナーがユーザーに複数の補助グループを持つことができるにもかかわらず、単一のアクティブグループの概念を選択した根本的な理由は何ですか?
Unixでは、グループの最初の主な目的は、ディスク上のファイルへの共有アクセスを許可することでした。このユースケースでは、通常、ほとんどの場合ファイルにアクセスし、時々ユーザーグループ間で共有されるファイルにアクセスします。
だから私はそれが最初からこのモデルを中心に設計されていると思います。モデルは時間の経過とともに修正されましたが、一般的なアプローチは同じままです。つまり、プライマリグループ(に割り当てられている)に属し、メンバーになることができる/etc/passwd
セカンダリグループ(に割り当てられている)があります。/etc/group
一部の初期実装(Sun / Solarisなど)では、NIS +を使用したときにユーザーがメンバーになることができるグループの総数は約15に制限されています。
Q2:すべてのグループが同時にアクティブになるとどうなりますか?
POSIXには、このデザインでAPIを公開する多くのシステムコールがあるため、これを修正することは、現在周辺に構築されているソフトウェアの量を考慮するのが難しい作業になる可能性があります。そしてそれを変える理由はまったくありません。
他の大きな制限は、ファイルシステムとプロセススペースです。ファイルシステムの場合、通常、特定のファイルまたはディレクトリを「グループ化」するGIDの単一値のみが含まれます。プロセスを実行しても同様です。通常、グループに関連付けられています。
しかし、時間が経つにつれて、この全体的なアプローチは、Active Directoryや他の資格情報テクノロジとの統合に適応できるようになったため、初めて学ぶときに少し奇妙であっても非常に良い実装です。