只复制 /dev/random 和 /dev/urandom 可以吗?

只复制 /dev/random 和 /dev/urandom 可以吗?

我正在设置一些东西 - 究竟是什么可能并不重要。

无论如何,我从我的应用程序中收到一个错误,表明需要 /dev/random 和 /dev/urandom 但缺失。

所以我从包含它们的 Linux 版本中复制了它们,然后一切正常。

这个可以吗?因为我这样做可能会出现什么问题?如果这不行,是否有“正确”的方法来创建 /dev/random 和 /dev/urandom?

答案1

要正确创建两个设备,请使用:

mknod -m 444 /dev/random c 1 8
mknod -m 444 /dev/urandom c 1 9

/dev/random将生成高熵伪随机数据。如果熵耗尽,它将阻塞,直到为新的 PRD 生成足够的熵。

/dev/urandom不关心熵是否足够高,根据当前的密码学理解,这实际上没有意义。结果是urandom在熵干旱期间不会阻塞,但由于初始种子使用了足够的熵,因此随机性的“弱点”此时纯粹是理论上的。

答案2

是的,您可以复制/dev/random设备。如果您从中获取它们的 Linux 文件系统具有兼容的定义(相同的主要和次要编号),那么它就可以工作。

您不能只使用cp不带参数的文件,因为这会复制随机数据而不是文件系统对象。使用cp -a。 (-a是“保留一切”的 GNU 选项)。

其次,当然您必须是 root,如果您尝试创建/dev条目,则可以假设您是 root。如果普通用户尝试cp -a /dev/random foo,他们会收到:

cp: cannot create special file `foo': Operation not permitted

如果您有权限,cp -a它将创建特殊(字符设备)文件的副本。

另一种方法就是 mknod。如果我们碰巧知道设备的主设备号random是 1,次设备号是 8,我们可以这样做

mknod foo c 1 8   # character device, major 1, minor 8

现在foo指向与 相同的内核设备/dev/random。权限也很重要;创建条目时/dev,注意权限;使用-m的参数mknod

如果使用 复制/dev/random现有的 Linux 文件系统树cp -a,它应该已经拥有正确的权限(当然还有所有权)。

但是,我会调查为什么您的系统没有这些条目!

相关内容