(注:このgroups
コマンドは、まだ便利ですが、ほとんどはidコマンドに置き換えられています。)
ユーザーには、ログインに使用するファイル/etc/passwd
ファイルで従来から定義されているプライマリグループがあります
が、現在は他のソースがある場合があります。彼はまた、ファイル/etc/groups
で伝統的に指定されているセカンダリグループまたは補足グループとして知られる追加グループのメンバーである場合がありますが、現在は追加ソース(NIS、LDAP、SAMBAなど)から来たり、暗示されることもあります。
プライマリおよび補足グループは、ログイン時に定義され、現在のままです。ただし、ユーザー
はコマンドを使用して、現在のアクティブなプライマリグループをいつでも変更できnewgrp
ます。
ログインプロセスにより、プライマリグループと補足グループが設定されます。後者の場合、通常はlibc関数initgroupsを呼び出します。これは、補助グループデータのリストをコンパイルし、それをsetgroups関数に渡し
ます
。setgroups関数は、プロセスのコンテキストでそれを確立します。
情報のソースinitgroups
は次のとおりです。
GNU Cライブラリおよびその他の特定のアプリケーションで使用され、さまざまなカテゴリのネームサービス情報を取得するソースとその順序を決定します。情報の各カテゴリは、データベース名で識別されます。
このgroups
コマンドは、ユーザーに現在適用されているグループを表示します。リストは、現在のプライマリグループから始まり、ログイン時から補足グループが続きます。ログイン時刻以降のデータのソースへの変更は、表示されたリストには反映されません。
groups username
コマンドがするのLinuxを求めて計算し、それは主にファイル使用して行うであろう、そのユーザーのグループを/etc/password
して/etc/groups
、その後、追加のソースを。これはシステムファイルの現在の状況を反映し、ログイン時からまだ有効な現在のグループとは異なる場合があります。
このgroups username
コマンドは、ログインプロセスが補足グループの計算に使用したすべてのソースを使用しない場合、異なる結果になる場合があります。これらのソースは、ログインからアクセスできない場合や、コマンドによって参照されない場合があります。
このid username
コマンドを使用すると、より良い結果が得られる場合がありますが、ログインプロセスの場合ほど完全であるとは限りません。このid
コマンドは、古いgroups
コマンドよりも新しいものであり、古いコマンドよりも正確であることを目的としていました。
このgroups
コマンドは正確で正しい結果を提供しますがgroups username
、同じことを行うためにコマンドに依存できないことを十分に実証しています。
groups
コマンドのソースコードを調べることなくgroups username
、Linuxディストリビューション分析でのコマンドの実装は、/etc/groups
あなたの場合は何も含まれていないが/etc/nsswitch.conf
、を使用していないため、すべての補助グループから来たと思います。したがって、プライマリグループ名のみが表示され
jacob
ます。
詳細については、以下を参照してください。