Linuxプログラミングインターフェースからの情報/etc/passwd
:
パスワードファイルには同じユーザーIDを持つ複数のレコードがありますが(一般的ではありません)、許可されています。複数ログイン~のため同じユーザーID。これにより、複数のユーザーが異なるパスワードを使用して同じリソース(ファイルなど)にアクセスできます。その他のログインとともに各種グループのグループID。
グループID(GID)フィールドは、最初のグループの数値IDです。ここでユーザー会員になってください。ユーザーの他のグループメンバーシップは、システムグループファイルで定義されます。
について/etc/group
:
ユーザーリストフィールドはカンマ区切りのリストです。ユーザー名グループのメンバーは誰ですか? (リストには以下が含まれます。ユーザー名 代わりにユーザーID、前述のように、ユーザーIDはパスワードファイル内で必ずしも一意である必要はないからです。 )
存在する/etc/passwd
、
グループIDフィールドは、ユーザー名またはユーザーIDによって異なりますか?
つまり、同じユーザーIDの異なるユーザー名が異なるグループIDを持つことはできますか、または同じユーザーIDのすべてのユーザー名が同じグループIDを持つ必要がありますか?
ありがとうございます。
ベストアンサー1
ユーザーデータベースの中核またはその他は/etc/passwd
ログイン名です。これは、ログイン時に自分自身を識別するために提供するすべてです。このキーを使用すると、プログラムはユーザーデータベースに保存されている他のすべての情報を検索できます。この場合、ユーザーデータベースの他のユーザーは考慮されません。同じユーザーIDを持つ他のユーザーも同様です。 (通常、これは次のように行われます。getpwnam
またはgetpwnam_r
、直接または渡すパム。 )
したがって、ログイン名は、保存されたパスワード、ユーザーID、(デフォルト)グループID、GECOS情報、ホームディレクトリ、およびシェルになります。つまり、2人のユーザーが同じユーザーIDを共有できますが、ホームディレクトリとシェルが異なる可能性があります。 (これは過去にルートに静的にリンクされた代替シェルを提供するためによく使用されています。IDroot
が0、シェルを持つ/bin/bash
一般ユーザー、または別のユーザーがあり、sashroot
IDが0で、異なるシェルを持つ他のユーザーがある可能性があります。)
だから答えは
グループIDフィールドは、ユーザー名またはユーザーIDによって異なりますか?
はい、ユーザー名にのみ依存します。
グループデータベースのキーもグループ名です。このキーに基づいて、プログラムはグループデータベースに保存されている他のすべての情報を再取得できます。これは、グループデータベースの他のグループに関係なく発生します。 (ユーザーのセカンダリグループを決定するとき、プロセスはユーザーデータベースを読むよりも複雑です。特定のユーザーが属するグループを一覧表示する機能がないため、これは通常次のループで実行されます。getgrent
そしてendgrent
.)
したがって、グループ名によって、グループパスワード、グループID、およびグループメンバーシップリスト(つまり、ユーザー名リスト)が生成されます。ユーザーのセカンダリグループセットを作成するには、すべてのグループを列挙し、ユーザーのログイン名をグループメンバーシップと一致させます。したがって、同じユーザーIDを持つ2人の異なるユーザーは、異なるプライマリグループを持つことができるだけでなく、異なるセカンダリグループのセットに属することもできます。
だから答えは
つまり、同じユーザーIDの異なるユーザー名が異なるグループIDを持つことはできますか、または同じユーザーIDのすべてのユーザー名が同じグループIDを持つ必要がありますか?
ユーザーグループはユーザー名にのみ依存します。異なるユーザー名はユーザーIDを共有できますが、プライマリグループとセカンダリグループは異なります。