グループの作成方法を検索するたびに、例は常に8章(つまりシェル)コマンドを指しています。一般的なシステムコールのリストを見ると(例:ウィキペディアページ)、グループIDを設定してインポートするコマンドが表示されますが、生成方法の詳細はありません。
このファイルからファイルシステムロックを取得しているように見えるいくつかのコードが見つかりましたが、/etc/groups
一部のシステム(Androidなど)にはこのファイルがありません。
オペレーティングシステムは、グループが何であるかをどうやって知ることができますか?ファイルとプロセスエントリの純粋にメタデータですか?
ベストアンサー1
カーネルはグループが何であるかわかりません。グループIDのみを知っています。カーネルのグループを「作成」する必要はなく、グループIDのみを割り当てるだけです(これらはすべてユーザーにも適用されます)。
これで、オペレーティングシステム全体(カーネル外)はグループとユーザーを管理します。通常、名前(グループ、ログイン)とIDを検索して相互に変換できますが、/etc/group
最終的にライブラリ呼び出し(システム呼び出しではない)(および他のgetpw *)、および(にリストされているように/etc/passwd
)他のオプションも使用できます。および getgr*) 資格情報ソースで構成されたすべての項目を介して変換します。/etc/nssswitch.conf
getpwent
getgrent
そのため、ユーザーとグループを生成するシェルコマンドだけがそのように実行されるため、これを見つけることができます。カーネルがこの情報を追跡しないため、システムコールはありません。
(技術的にはGUIインタフェースを使用して作成できますが、シェルコマンドと変わりません。)
Linuxカーネル(Android)の一部の使用は、ユーザーとグループを動的に作成します。繰り返しますが、これはカーネルではなくユーザーモードのAndroid監視システムによって管理されます。