cap_kill能力分析

  • cap_kill: 允许对不属于自己的进程发送信号

举个简单的例子:

默认情况下普通用户是不能kill根用户进程的,但如果我们赋予/bin/killcap_kill能力后,普通用户就会拥有kill其他用户(包括root)进程的权限。

让我们通过下面的例子加深理解

  1. 创建用户test,用于测试
$ adduser test
  1. root身份运行一个进程
$ python -m SimpleHTTPServer 9099
  1. 新建会话,获取进程Pid,并以test身份kill
$ su - test
$ /bin/kill -9 `ps -ef|grep "python -m SimpleHTTPServer 9099" | grep -v grep|awk '{print $2}'`
kill: sending signal to 62220 failed: Operation not permitted

显然不具备权限

  1. 切换至root用户对kill指令添加CAP_KILL能力
$ setcap cap_kill=eip /bin/kill
  1. 切换至test用户再次执行kill
$ su - test
$ /bin/kill -9 `ps -ef|grep "python -m SimpleHTTPServer 9099" | grep -v grep|awk '{print $2}'`

此时test用户kill掉了属主为root的进程

注意: 必须为/bin/kill绝对路径引用,否则不生效

  1. 清理测试用例
$ setcap -r /bin/kill
$ userdel -r test
Copyright © weiliang 2021 all right reserved,powered by Gitbook本书发布时间: 2024-04-22 16:03:41

results matching ""

    No results matching ""