cap_mknod解析
cap_mknod: 允许使用mknod()系统调用
首先我们需要了解:
mknod()是用来干什么?
mknod()主要用于创建块设备,mknod指令是其具体实现。
接下来我们了解下mknod指令。
mknod指令
指令格式
$ mknod [选项] [名称] [类型] [主设备号] [次设备号]
- 创建用户
test,用于测试
$ adduser test
root用户创建一个块设备
$ mknod /dev/sdb b 8 0
$ ls /dev/sdb
brw-r--r--. 1 root root 8, 0 Nov 6 07:02 /dev/sdb
test用户创建一个块设备
$ whoami
test
$ mknod /tmp/tnod1 c 1 5
mknod: ‘/tmp/tnod1’: Permission denied
root用户为/usr/bin/mknod授予cap_mknod能力
$ whoami
root
$ setcap cap_mknod=eip /usr/bin/mknod
- 切换
test用户再次创建一个块设备
$ whoami
test
$ mknod /tmp/tnod1 c 1 5
- 清理测试用例
$ userdel -r test
$ setcap -r /usr/bin/mknod