我已经挠头好一阵子了,找不到办法让它起作用…
我想在openbsd服务器上运行一些cgi脚本(用python编写)。由于OpenBSD上的web服务器在监狱中运行,我重新创建了整个文件夹结构(/bin/dev/usr/usr/local/lib等),但是当我试图导入一些需要访问/dev/urandom设备的Python模块时,仍然会收到“500服务器内部错误”。
我已经使用mknod创建了设备特殊文件。

ls -la /dev/*random
ls -la /dev/{null,zero}

我得到了以下输出
crw-r--r--  1 root  wheel   45,   3 Sep 13 11:09 /dev/arandom
crw-r--r--  1 root  wheel   45,   0 Jul 15 19:02 /dev/random
crw-r--r--  1 root  wheel   45,   1 Jul 15 19:02 /dev/srandom
crw-r--r--  1 root  wheel   45,   2 Jul 15 19:02 /dev/urandom


crw-rw-rw-  1 root  wheel    2,   2 Sep 16 01:30 /dev/null
crw-rw-rw-  1 root  wheel    2,  12 Jul 15 19:02 /dev/zero

所以我在/var/www/dev文件夹中执行了以下命令(OpenBSD web服务器在chroot-uwww/var/www中运行)
mknod -m 666 null c 2 2
mknod -m 666 zero c 2 12
mknod -m 644 random 45 0
mknod -m 644 srandom 45 1
mknod -m 644 urandom 45 2
mknod -m 644 arandom 45 3

但是,Python仍然报告
OSError: [Errno 6] Device not configured '/dev/urandom'

同样的代码在非chroot环境中也可以正常工作。
import os
import cgitb
cgitb.enable()

任何帮助都将不胜感激!

最佳答案

在openbsd上,使用/选项装入非根(nodev)分区。看看你的/etc/fstab例如:

$ mount | grep -F /var
/dev/wd0g on /var type ffs (local, nodev, nosuid)

10-02 10:37