смонтировать блочное устройство без прав root программно

Я хочу смонтировать блочное устройство, особенно оптические приводы, например, / dev / sr0 (или / dev / cdrom) в моем приложении (написанном на C ++) в Linux, чтобы читать каждый файл с устройства. Я нашел функцию mount () и написал следующий код:

mount("/dev/sr0", "/path/to/mount/point", "udf", MS_RDONLY, "");

Он работает очень хорошо, ТОЛЬКО ЕСЛИ у меня есть права root, что не является обычным случаем.

Поскольку среды рабочего стола (например, KDE) могут монтировать USB / CD / DVD без разрешения, я подумал, может быть, есть интерфейс, позволяющий это, например протокол D-Bus, но я не смог найти.

Неужели невозможно смонтировать устройство без рут-прав программно? Или я что-то упустил?


person xylosper    schedule 16.03.2014    source источник


Ответы (1)


Неужели невозможно смонтировать устройство без рут-прав программно?

Да, это невозможно.

Из man 2 mount:

Соответствующие привилегии (Linux: возможность CAP_SYS_ADMIN) необходимы для монтирования файловых систем.

person alk    schedule 16.03.2014
comment
Спасибо за совет, но я не спрашивал, как вызвать функцию mount () без разрешения root. Я спросил, как смонтировать устройство без прав root программно. mount () - это просто пример неудачной попытки. Нет другого способа примонтировать? - person xylosper; 16.03.2014
comment
@xylosper: Нет, нет - person alk; 16.03.2014
comment
На самом деле, это неправильно в современных системах Linux, либо с помощью пользовательской опции в fstab для определенных монтирований, либо с использованием таких вещей, как gvfs-mount. askubuntu.com/a/191093 имеет хорошее объяснение с вариантами. - person Tom Parker-Shemilt; 16.03.2014