setgroups コマンド

目的

セッションのプロセス・グループ・セットをリセットします。

構文

setgroups [ - ] [ -a GroupSet ] [ -d GroupSet ] [ -r [ Group ] ] [ GroupSet ]

説明

setgroups コマンドは、デフォルトでは現行シェルに関するユーザーの現行グループ・セットおよびプロセス・グループ・セットを表示します。 ユーザーのグループ・セットは、ユーザー・データベース・ファイル内で定義されます。 フラグおよび GroupSet パラメーターを指定すると、このコマンドによって GroupSet パラメーターでリストしたプロセス・グループ・セットがリセットされます。 GroupSet パラメーターは、グループ名をコンマで区切ったリストです。 使用可能なグループは、ユーザー・データベース・ファイル内で定義されます。

また、setgroups コマンドを使用すると、現行グループ・セットについてグループを追加または削除できます。 -r フラグを使用すると、実グループ ID をリセットできます。 Groupset パラメーターを指定してもフラグを指定しなければ、setgroups コマンドによってすべてのグループがリセットされ、リスト内の最初のグループが実グループになります。 setgroups コマンドでは、制御端末のセキュリティー特性は変更されません。

setgroups コマンドを実行すると、現行シェルは常に新規のシェルに置き換えられます。 このコマンドは、正常に実行されるかどうかに関係なくシェルを置き換えます。 したがって、このコマンドはエラー・コードを戻しません。

setgroups -r コマンドは、newgrp コマンドと同じです。

フラグ

項目 説明
-a GroupSet GroupSet パラメーターで指定されたグループを、現行セッションに追加します。 新規のセットのグループ数は、NGROUPS_MAX グループ (limits.h ファイルに定義されている値) を超えてはなりません。 実グループ ID は変更されません。
-d GroupSet GroupSet パラメーターで指定されたグループを、現行セッションから除去します。 実グループが除去されると、現行セットにリストされている次のグループが実グループになります。
-r Group 現行プロセスの実グループをリセットします。 Group パラメーターを指定せず、現在の実グループが 1 次グループでない場合、-r フラグは現在の実グループを除去し、実グループを元の 1 次グループにリセットします。 Group パラメーターを指定すると、この動作は newgrp コマンドと同じになります。
- セッションのグループ・セットを、元のログイン状態に再初期化します。

セキュリティー

アクセス制御: このコマンドは、一般ユーザー・プログラムでなければなりません。 このコマンドは、トラステッド・コンピューティング・ベース (TCB) 内のプログラムとしてインストールします。このコマンドは、 setuid (SUID) ビットが設定されている root ユーザーが所有しなければなりません。

アクセスされるファイルは以下のとおりです。

モード ファイル
r /etc/passwd
r /etc/group

監査イベントは以下のとおりです。

項目 説明
イベント 情報
項目 説明
USER_SetGroups realgroup, groupset

  1. ユーザー sah として、 以下のように入力すると、現行グループ・メンバーシップおよびプロセス・グループ・セットを表示できます。
    setgroups
    以下のような出力が表示されます。
    sah:
    
       user groups = staff,payroll
       process groups = staff,payroll
  2. 現行セッションのプロセス・グループに finance グループを追加するには、以下のように入力します。

    setgroups  -a  finance
  3. 実グループを finance に設定するには、以下のように入力します。
    setgroups finance,staff,payroll
    これによって、finance が実グループとして設定されます。 staff および payroll グループは、 補足グループ・リストを構成します。
  4. 現行プロセス・グループ・セットから payroll グループを削除するには、以下のように入力します。
    setgroups  -d  payroll
  5. プロセス・グループ・セットをデフォルトのセットに変更するには、 以下のように入力します。
    setgroups   -
    これによって、現行セッションはログイン直前の元の状態にリセットされます。

ファイル

項目 説明
/usr/bin/setgroups setgroups コマンドが入っています。
/etc/group 基本グループ属性が入っています。
/etc/passwd 基本ユーザー属性が入っています。