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 | realgroup 和 groupset |
示例
- 以用户身份sah,您可以通过输入以下命令来显示当前组成员资格和进程组集:
出现与以下内容类似的输出:setgroupssah: 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 | 包含基本用户属性。 |