setgroups 命令

用途

重新设置会话进程组集。

语法

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

描述

缺省情况下,setgroups 命令为当前 shell 显示用户当前组集和进程组集。 用户数据库文件定义用户组集。 当给定标志和 GroupSet 参数时,该命令会重新设置 GroupSet 参数列出的进程组集。 GroupSet 参数是一个逗号分隔的组名列表。 用户数据库文件中定义了可用的组。

您也可以使用 setgroups 命令从当前组集中添加或删除组。 使用 -r 标志,您能重新设置实组标识。 如果指定了 Groupset 参数但没有指定标志,那么 setgroups 命令重新设置所有的组并且将第一组放在实际组列表中。 setgroups 命令不更改控制终端的安全性特征。

当运行 setgroups 命令时,系统始终用新的 shell 代替旧的 shell。 不管命令是否成功,该命令都会替换 shell。 因此,命令不会返回错误代码。

setgroups -r 命令和 newgrp 命令相同。

标志

描述
-a GroupSet GroupSet 参数指定的组添加到当前的会话中。 新集合中的组数不能超过 NGROUPS_MAX 组数(一个在 limits.h 文件中定义的值)。 实际组标识不变。
-d GroupSet 从当前会话中除去 GroupSet 参数指定的组。 如果除去了实际组,那么当前集内所列的下一组成为实际组。
-r 为当前进程重新设置实际组。 如果未指定 Group 参数,并且当前实际组并非主组,那么 -r 标志除去当前实际组并且将其复位成原始主组。 如果指定了 Group 参数,那么这与 newgrp 命令的行为相同。
- 将会话的组集重新初始化为它的初始登录状态。

安全性

访问控制:此命令是常规用户程序。 该命令应该作为一个程序安装在“可信计算库”(TCB)上。 带有 setuid (SUID) 位设置的 root 用户应该拥有此命令。

访问的文件:

方式 文件
R /etc/passwd
R /etc/group

审计事件:

描述
事件 信息
描述
USER_SetGroups realgroupgroupset

示例

  1. 以用户身份sah,您可以通过输入以下命令来显示当前组成员资格和进程组集:
    setgroups
    出现与以下内容类似的输出:
    sah:
    
       user groups = staff,payroll
       process groups = staff,payroll
  2. 要添加finance组到当前会话的进程组,请输入:
    setgroups  -a  finance
  3. 要将实际组设置为finance,请输入:
    setgroups finance,staff,payroll
    此集合finance作为真正的群体 该staffpayroll组组成补充组列表。
  4. 要删除payroll来自当前进程组集的组,请输入:
    setgroups  -d  payroll
  5. 要将进程组集更改回缺省集,请输入:
    setgroups   -
    登录之后会将当前会话复位为原始状态。

文件

描述
/usr/bin/setgroups 包含 setgroups 命令。
/etc/group 包含组的基本属性。
/etc/passwd 包含基本用户属性。