Я работаю над пользовательской ОС, и рецепт make я написал для создания нового образа диска, требует sudo для подключения / отключения виртуального образа жесткого диска к устройству /dev/nbdN . Поскольку я не хочу использовать sudo в рецепте, я просто использовал sudo make disk .

Я подумал, что могу просто добавить себя в группу disk (так как stat /dev/nbd0 показывает UID файла как root , а GID как disk), чтобы я мог подключать и отключать устройства /dev/nbdN без sudo , но это все же не работает (да, я вышел из системы и снова вошел в систему, а id отображается на групповом disk).

Должен ли я по-прежнему иметь права root для успешной обработки вызовов ioctl (вот где, кажется, происходит сбой, если я не root)? Или есть что-то еще специфичное для qemu-nbd которое мне нужно сделать, чтобы избежать использования root?

Изменить: моя команда это (у меня есть разрешения R/W для hda.qcow2):

$ qemu-nbd -c /dev/nbd0 hda.qcow2

И вывод такой:

/build/buildd/qemu-2.0.0+dfsg/nbd.c:nbd_init():L504: Failed to set NBD socket
/build/buildd/qemu-2.0.0+dfsg/nbd.c:nbd_receive_request():L638: read failed

Выполнение той же команды с sudo выполняется успешно без вывода.

ОС Ubuntu 14.04 x64.

1 ответ1

0

Вам нужен CAP_SYS_ADMIN (см. Nbd_ioctl ()), например, путем предоставления его двоичному файлу : setcap 'cap_sys_admin=ep' qemu-nbd - хотя CAP_SYS_ADMIN в основном root.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .