Настройка устройств в chroot-окружении 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

Поэтому я выполнил следующие команды в папке /var/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'

Тот же код отлично работает в среде без chroot.

import os
import cgitb
cgitb.enable()

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


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


Ответы (1)


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

$ mount | grep -F /var
/dev/wd0g on /var type ffs (local, nodev, nosuid)
person mkucharski    schedule 29.12.2013
comment
То же самое для NetBSD. - person Luis; 20.04.2021