10807

54 分钟

#Bash 的 setpriv 命令

setpriv [OPTION]... [CMD [ARG]...]

功能

使用指定的 Linux 特权设置运行程序

类型

可执行文件(/usr/bin/setpriv),属于 util-linux

参数

  • OPTION 选项:
    • --clear-groups - 清除补充组
    • -d, --dump - 转储当前特权状态
    • --groups group... - 设置补充组
    • --inh-caps (+|-)cap... - 设置可继承能力
    • --ambient-caps (+|-)cap... - 环境能力
    • --bounding-set (+|-)cap... - 设置能力边界集
    • --keep-groups - 保留补充组
    • --init-groups - 初始化补充组
    • --list-caps - 列出所有已知能力
    • --no-new-privs - 限制进程在执行新程序时 不能获得新的权限
    • --rgid gid - 设置实际组 ID
    • --egid gid - 设置有效组 ID
    • --regid gid - 设置实际组 ID 和有效组 ID
    • --ruid uid - 设置实际用户 ID
    • --euid uid - 设置有效用户 ID
    • --reuid uid - 设置实际用户 ID 和有效用户 ID
    • --securebits (+|-)securebit... - 设置或清除安全位
    • --pdeathsig keep|clear|<signal> - 保留、清除或设置父进程死亡信号
    • --selinux-label label - 请求特定的 SELinux 转换
    • --apparmor-profile profile - 请求特定的 AppArmor 配置
    • --reset-env - 清除除了 TERM 以外的所有环境变量
    • --help - 显示帮助
    • --version - 显示版本
  • CMD - 要运行的命令
  • ARG - 传递给 CMD 的参数列表

#示例

查看当前特权设置

$ setpriv --dump
uid: 1000
euid: 1000
gid: 1000
egid: 1000
Supplementary groups: 4,24,27,30,46,101,1000
no_new_privs: 0
Inheritable capabilities: [none]
Ambient capabilities: [none]
Capability bounding set: chown,dac_override,dac_read_search,fowner,fsetid,kill,setgid,setuid,setpcap,linux_immutable,net_bind_service,net_broadcast,net_admin,net_raw,ipc_lock,ipc_owner,sys_module,sys_rawio,sys_chroot,sys_ptrace,sys_pacct,sys_admin,sys_boot,sys_nice,sys_resource,sys_time,sys_tty_config,mknod,lease,audit_write,audit_control,setfcap,mac_override,mac_admin,syslog,wake_alarm,block_suspend,audit_read,perfmon,bpf,checkpoint_restore
Securebits: [none]
Parent death signal: [none]
AppArmor profile: unconfined
$ sudo setpriv --dump
uid: 0
euid: 0
gid: 0
egid: 0
Supplementary groups: 0
no_new_privs: 0
Inheritable capabilities: [none]
Ambient capabilities: [none]
Capability bounding set: chown,dac_override,dac_read_search,fowner,fsetid,kill,setgid,setuid,setpcap,linux_immutable,net_bind_service,net_broadcast,net_admin,net_raw,ipc_lock,ipc_owner,sys_module,sys_rawio,sys_chroot,sys_ptrace,sys_pacct,sys_admin,sys_boot,sys_nice,sys_resource,sys_time,sys_tty_config,mknod,lease,audit_write,audit_control,setfcap,mac_override,mac_admin,syslog,wake_alarm,block_suspend,audit_read,perfmon,bpf,checkpoint_restore
Securebits: [none]
Parent death signal: [none]
AppArmor profile: unconfined

修改特权设置

$ id    # 查看 ID
uid=1000(primers) gid=1000(primers) groups=1000(primers),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),101(lxd)
$ sudo setpriv --reuid=1001 --regid=1001 --clear-groups id  # 指定用户 ID 和组 ID,并清除补充组 ID
uid=1001(user2) gid=1001(user2) groups=1001(user2)

#推荐阅读

#手册

更新: 2026/3/6

作者: PlanC

创建: 2026/3/6