(注:この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ます。
詳細については、以下を参照してください。