4

我正在尝试使用 capsh 来授予自己一个对某个用户完全没有能力的 shell。这样我就可以测试与非 root 相关但仅具有某些功能的安全性内容。

基本上我想让一个shell运行类似的东西。这将模拟测试程序运行的状态。

capsh --print
Current: =
Bounding set =
Securebits: 00/0x0/1'b0
 secure-noroot: no (unlocked)
 secure-no-suid-fixup: no (unlocked)
 secure-keep-caps: no (unlocked)
uid=10101(u0_a101)
gid=10101(u0_a101)
groups=9997(everybody),50101(all_a101)

然后我希望能够再次运行 capsh 以授予用户一些功能和/或更改 uid/gid(如果可能的话)。

如果有人有很好的参考,我还没有找到关于 capsh 的任何好的教程。

http://man7.org/linux/man-pages//man1/capsh.1.html

4

1 回答 1

5
  1. 列出当前能力

    capsh --print
    Current: =
    Bounding set=cap_chown,cap_dac_override,[...]
    Securebits: 00/0x0/1'b0
     secure-noroot: no (unlocked)
     secure-no-suid-fixup: no (unlocked)
     secure-keep-caps: no (unlocked)
    uid=1000(user)
    gid=1000(user)
    groups=4(adm),10101(u0_a101)
    
  2. 1. 从Bounding部分删除所有功能:

    capsh --drop=cap_chown,cap_dac_override,[...]
    
  1. +切换用户和组:

    capsh --gid=10101 --drop=cap_chown,cap_dac_override,[...] --uid=10101
    
  1. + 加入群组

    capsh --gid=10101 --drop=cap_chown,cap_dac_override,[...] \
    --uid=10101 --groups=9997,50101
    
  1. + 执行应用程序

    capsh --gid=10101 --drop=cap_chown,cap_dac_override,[...] \
    --uid=10101 --groups=9997,50101 -- -c 'ping 127.0.0.1'
    
于 2018-05-17T23:18:23.560 回答