cap_kill能力分析
cap_kill: 允许对不属于自己的进程发送信号
举个简单的例子:
默认情况下普通用户是不能kill根用户进程的,但如果我们赋予/bin/kill以cap_kill能力后,普通用户就会拥有kill其他用户(包括root)进程的权限。
让我们通过下面的例子加深理解
- 创建用户
test,用于测试
$ adduser test
- 以
root身份运行一个进程
$ python -m SimpleHTTPServer 9099
- 新建会话,获取进程
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
显然不具备权限
- 切换至
root用户对kill指令添加CAP_KILL能力
$ setcap cap_kill=eip /bin/kill
- 切换至
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绝对路径引用,否则不生效
- 清理测试用例
$ setcap -r /bin/kill
$ userdel -r test