TDr*_*bas 4 python openbsd cgi chroot jail
我已经挠头一段时间了,找不到让它工作的方法......
我想在我的 OpenBSD 服务器上运行一些 cgi 脚本(用 Python 编写)。由于 OpenBSD 上的网络服务器在监狱中运行,我重新创建了整个文件夹结构(/bin /dev /usr /usr/local/lib 等),但是当我'时仍然收到“500 服务器内部错误”我试图导入一些需要访问 /dev/urandom 设备的 Python 模块。
我已经使用 mknod 创建了设备特殊文件。
ls -la /dev/*random
ls -la /dev/{null,zero}
Run Code Online (Sandbox Code Playgroud)
我得到以下输出
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
Run Code Online (Sandbox Code Playgroud)
和
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
Run Code Online (Sandbox Code Playgroud)
所以我在 /var/www/dev 文件夹中执行了以下命令(OpenBSD web-server 在 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
Run Code Online (Sandbox Code Playgroud)
但是,Python 仍然报告说
OSError: [Errno 6] Device not configured '/dev/urandom'
Run Code Online (Sandbox Code Playgroud)
相同的代码在非 chroot 环境中运行良好。
import os
import cgitb
cgitb.enable()
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
在 OpenBSD 上,非根 ( /) 分区使用nodev选项挂载。看看你的/etc/fstab. 例如:
$ mount | grep -F /var
/dev/wd0g on /var type ffs (local, nodev, nosuid)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1405 次 |
| 最近记录: |