Udisks

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Менеджер дисков udisks (пакет udisks2) предоставляет интерфейсы для операций с дисками и устройствами хранения данных.

udisks состоит из двух основных элементов:

  • демон udisksd, который предоставляет интерфейсы D-Bus для управления устройствами хранения.
  • утилита командной строки udisksctl, с помощью которой пользователь взаимодействует с демоном..

Действия, которые пользователь может выполнять с помощью udisks, ограничены использованием polkit.

Использование

По умолчанию udisks2 монтирует съёмные устройства в каталог /run//media/<имя_пользователя>/.

Команда монтирования udisksctl в отличие от команды mount может быть доступна непривилегированным пользователям.

Из командной строки монтирование может выполняться командой:

$ udisksctl mount -b /dev/<имя_носителя>

Размонтирование:

$ udisksctl unmount -b /dev/<имя_носителя>

Для более подробной информации см. udisksctl help.

Интерфейс работы с устройствами (Udisks и Udev)

Интерфейс работы с устройствами (Udisks и Udev)

1—3

Обнаружением и управлением устройствами в Linux занимается подсистема Udev.

Udev — это служба обнаружения, которая сообщает ядру, какие устройства подключены и где. Служба udev получает события (uevents) от устройств непосредственно от ядра всякий раз, когда устройство добавляется, удаляется из системы, или меняет своё состояние. Информация об устройствах хранится в базе данных менеджера. Udev управляет файлами устройств в каталоге /dev, добавляя их, переименовывая и создавая символические ссылки.

Обнаружение устройства

4

Демон udisksd предоставляет имя org.freedesktop.UDisks2 на системной шине сообщений. Этот демон автоматически запускается через dbus-daemon или systemd всякий раз, когда приложение пытается получить доступ к его интерфейсам D-Bus.

Udisks-udev3.png

При подключении устройства, ядро отправляет сообщение Udev. Udisks использует библиотеку udev и связывается с демоном D-Bus. Приложение обращается к шине D-Bus и получает информацию о подключенном устройстве.

Уведомление о подключенном устройстве (например, флеш-накопителе USB) система может получить тремя способами:

  1. Напрямую от ядра через сообщения сокета Netlink (также как их получает udev).
  2. Через библиотеку udev, как это делает udisks. В pythone для этого существует библиотека pyudev.
  3. Через систему межпроцессного взаимодействия D-Bus, обращаясь через него к udisks.

Уведомление о подключенном устройстве

5-6: Взаимодействие Udisks2 и Polkit

Ряд операций и методов менеджера дисков Udisks2 требует проверки привилегий пользователя через вызов демона Polkit. Udisks2 через шину DBus может запросить у Polkit сведения и узнать — есть ли привилегии у пользователя, в сессии которого предполагается выполнить определенную операцию. Монтирование файловой системы является одной из таких операций, требующих проверки привилегий клиента.


Udisks2 запрашивает права у Polkit

Ссылки