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 |
例
- ユーザー sah として、
以下のように入力すると、現行グループ・メンバーシップおよびプロセス・グループ・セットを表示できます。
以下のような出力が表示されます。setgroups
sah: user groups = staff,payroll process groups = staff,payroll
- 現行セッションのプロセス・グループに
finance グループを追加するには、以下のように入力します。
setgroups -a finance - 実グループを
finance に設定するには、以下のように入力します。
これによって、finance が実グループとして設定されます。 staff および payroll グループは、 補足グループ・リストを構成します。setgroups finance,staff,payroll
- 現行プロセス・グループ・セットから
payroll グループを削除するには、以下のように入力します。setgroups -d payroll
- プロセス・グループ・セットをデフォルトのセットに変更するには、
以下のように入力します。setgroups -これによって、現行セッションはログイン直前の元の状態にリセットされます。
ファイル
項目 | 説明 |
---|---|
/usr/bin/setgroups | setgroups コマンドが入っています。 |
/etc/group | 基本グループ属性が入っています。 |
/etc/passwd | 基本ユーザー属性が入っています。 |