python-在chroot环境OpenBSD中配置设备

我已经挠了一段时间,无法找到使它工作的方法…

我想在我的OpenBSD服务器上运行一些cgi脚本(用Python编写).由于OpenBSD上的网络服务器在*中运行,因此我重新创建了整个文件夹结构(/ bin / dev / usr /usr/local/lib等.),但是当我“ m尝试导入一些需要访问/ dev / urandom设备的Python模块.

我已经使用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 -u www / 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)
上一篇:python-什么是Web应用程序框架?


下一篇:PHP-Alias指令可能永远不会匹配,因为它与早期的Alias重叠