2013-09-16 3 views
2

Я почесал голову на некоторое время теперь и не может найти способ, чтобы заставить его работать ...Конфигурирование устройств в изолированной среды OpenBSD

Я хочу, чтобы запустить некоторые CGI скрипты (написаны на Python) на моем Сервер OpenBSD. Поскольку веб-сервер на OpenBSD работает в тюрьме, я воссоздал всю структуру папок (/ bin/dev/usr/usr/local/lib и т. Д.), Но я все еще получаю «Внутреннюю ошибку сервера 500», m пытается импортировать некоторые модули Python, которые требуют доступа к устройству/dev/urandom.

Я создал специальные файлы устройства, используя 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 

Таким образом, я выполнил следующие команды в папке/вар/WWW/Dev (OpenBSD веб-сервер работает в 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' 

Тот же самый код отлично работает в среде без корневого-й изда.

import os 
import cgitb 
cgitb.enable() 

Любая помощь будет поистине оценена!

+0

Это почти наверняка проблема с конфигурацией системы - вы не настроили тюрьму вправо, а не на Python. Вы можете легко проверить это, просто увидев, что происходит, когда вы запускаете, например, 'head -c16/dev/urandom' или' dd if =/dev/urandom bs = 16 count = 1' изнутри тюрьмы. Если вы получите ту же ошибку, попросите SuperUser или ServerFault или другой общий форум Unix или OpenBSD. – abarnert

+0

Спасибо! Команда dd показывает тот же результат, что и Python. Так что это определенно проблема конфигурации. – TDrabas

ответ

2

На участках под открытым небом OpenBSD (/) установлены nodev. Посмотрите на свой /etc/fstab. Например:

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