环境:
- 操作系统:CentOS 8(generic/centos8 Vagrant box)
- 虚拟化:VMware-Workstation 16.1.0 build-17198959
重现步骤:
- 创建设备新策略
cd /sys/fs/cgroup/devices
mkdir custom_poc
- 验证哪个设备被用作 tty(多种方法):
使用 tty:
root@centos8# tty /dev/pts/0
获取过程标准输入:
ls -l /proc/$$/fd/{0,1,2} lrwx------. 1 root root 64 Mar 5 11:25 /proc/2446/fd/0 -> /dev/pts/0 lrwx------. 1 root root 64 Mar 5 11:25 /proc/2446/fd/1 -> /dev/pts/0 lrwx------. 1 root root 64 Mar 5 11:25 /proc/2446/fd/2 -> /dev/pts/0
- 将 tty 设备添加到
devices.deny
:
检查设备主要和次要编号:
ls -l /dev/pts/0 crw--w----. 1 vagrant tty 136, 0 Mar 5 11:28 /dev/pts/0
拒绝访问:
root@centos8# echo 'c 136:0 w' > /sys/fs/cgroup/devices/custom_poc/devices.deny root@centos8# echo $$ > tasks root@centos8# echo 'a' > /dev/pts/0 -bash: /dev/pts/0: Operation not permitted
但是,即使在删除对 STDIN 设备的访问之后,我的 Bash 终端也能正常工作。这是一个简单的 whoami 的输出:
root@centos8# whoami root