使用 capsh 删除所有功能

Dav*_*vid 5 linux linux-capabilities capsh

我正在尝试使用 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)
Run Code Online (Sandbox Code Playgroud)

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

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

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

Mur*_*mel 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)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 1. 从边界部分删除所有功能:

    capsh --drop=cap_chown,cap_dac_override,[...]
    
    Run Code Online (Sandbox Code Playgroud)
  1. + 切换用户和组:

    capsh --gid=10101 --drop=cap_chown,cap_dac_override,[...] --uid=10101
    
    Run Code Online (Sandbox Code Playgroud)
  1. + 加入群组

    capsh --gid=10101 --drop=cap_chown,cap_dac_override,[...] \
    --uid=10101 --groups=9997,50101
    
    Run Code Online (Sandbox Code Playgroud)
  1. + 执行应用程序

    capsh --gid=10101 --drop=cap_chown,cap_dac_override,[...] \
    --uid=10101 --groups=9997,50101 -- -c 'ping 127.0.0.1'
    
    Run Code Online (Sandbox Code Playgroud)