linux提高随机读测试,linux – 绕过dev / urandom |随机进行测试

本文介绍了如何在Linux系统中利用mount命名空间和setns系统调用来创建一个独立的/dev/random设备,使得特定进程可以读取预定义的数据,而其他进程仍然使用常规的/dev/random。这种方法需要root权限,并涉及到了mount命令的使用、unshare工具以及在新的命名空间内绑定挂载文件。这对于测试和隔离随机数生成器的行为非常有用。
摘要由CSDN通过智能技术生成

如果您的系统足够新(例如RHEL 7)并支持setns系统调用,则可以在mount命名空间的帮助下完成.需要root访问权限.

我们的想法是为进程创建一个单独的挂载命名空间,并在该命名空间内绑定 – 挂载/ dev / random上的其他文件或FIFO,以便来自此挂载命名空间的进程将从此绑定挂载文件中读取数据.其他进程将看到常规/ dev / random.

这是怎么做的.

准备:运行以下命令以使所有这些人员工作(因为默认情况下可能不起作用,有关详细信息,请参阅this question).

# mount --make-rprivate /

现在让我们创建一个在新的mount命名空间内运行的shell.

# unshare -m /bin/bash

你有新的bash start,它有自己的mount命名空间.您可以在此shell和其他shell中比较以下命令的结果:

这个shell:

# ls -l /proc/self/ns/mnt

lrwxrwxrwx. 1 root root 0 Sep 26 16:06 /proc/self/ns/mnt -> mnt:[4026532148]

其他外壳:

$ls -l /proc/self/ns/mnt

lrwxrwxrwx. 1 ec2-user ec2-user 0 Sep 26 16:06 /proc/self/ns/mnt -> mnt:[4026531840]

请注意,数字不同,因此两个shell位于不同的安装命名空间中,并且从第一个shell执行的安装将对系统中的其他进程不可见(此shell的所有子节点除外).

现在在这个shell中,我们可以在现有的/ dev / random上绑定一些东西.

# echo 'some large text' > /tmp/fakerandom

# mount --bind /tmp/fakerandom /dev/random

其他进程没有看到,因为/ dev / random像往常一样工作:

$ls -l /dev/random

crw-rw-rw-. 1 root root 1, 8 Sep 26 15:45 /dev/random

$cat /dev/random

�Znp7�v�c��Ω^C

但在我们的shell中它很特别:

# ls -l /dev/random

-rw-r--r--. 1 root root 16 Sep 26 16:18 /dev/random

# cat /dev/random

some large text

对于功能测试,您可能希望用某些FIFO替换/ dev / random并在某些其他进程中将一些已知数据写入该FIFO(如果需要,请参阅mkfifo(1)以获取更多信息).

有关mount命名空间的更多信息可以在this优秀文章中找到.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值