我正在尝试创建一个小容器,让我可以将 /dev/random 重新映射到 /dev/urandom,而无需特定程序的 root 权限。到目前为止我所拥有的:
unshare -r bash -c 'chroot . /bin/busybox sh'
在大多数情况下,这似乎充当完整的 chroot,相当于sudo chroot . /bin/busybox sh
,但有一个问题:当我尝试 mknod somefile c 1 9 时,我得到操作不允许。这在标准 chroot 中有效。有可能解决这个问题吗?如果没有,是否有更好的方法来完成我正在尝试的事情?
请不要让我淹没在有关 random 与 urandom 安全性的评论中。这不是重点。
答案1
如果程序是动态链接的,则可以通过以下方式重写文件打开函数预加载图书馆。看执行前重定向文件描述符一些示例代码;替换/dev/null
为并在构建命令中/dev/urandom
设置。PATH_TO_OVERRIDE=/dev/random