Udisks (Русский)
udisks предоставляет демон udisksd, который реализует интерфейс D-Bus, используемый для запроса и управления устройств хранения данных и инструмента командной строки udisksctl, используемый для запросов и использования в качестве демона.
Contents
Установка
Существует две версии udisks по имени udisksAUR и udisks2. Разработка udisks прекратилась в пользу udisks2. [1]
udisksd (udisks2) и udisks-демон (udisksAUR) запускаются по требованию D-Bus и не должны быть включены явно (см. udisksd(8) и udisks-daemon()[dead link 2017-09-25]). Ими можно управлять через командную строку с помощью udisksctl и udisks, соответственно. Для получения дополнительной информации смотрите udisksctl(1) и udisks(8).
Настройка
Действия пользователя, на выполнение и использование udisks, ограничиваются Policykit. Если Вашей сессии нет или она не активируется, настройте policykit вручную. Следующий файл устанавливает общие полномочия udisks для группы storage. [2]
/etc/polkit-1/rules.d/50-udisks.rules
polkit.addRule(function(action, subject) {
var YES = polkit.Result.YES;
var permission = {
//Требуется только для udisks1:
"org.freedesktop.udisks.filesystem-mount": YES,
"org.freedesktop.udisks.filesystem-mount-system-internal": YES,
"org.freedesktop.udisks.luks-unlock": YES,
"org.freedesktop.udisks.drive-eject": YES,
"org.freedesktop.udisks.drive-detach": YES,
//Требуется только для udisks2:
"org.freedesktop.udisks2.filesystem-mount": YES,
"org.freedesktop.udisks2.filesystem-mount-system": YES,
"org.freedesktop.udisks2.encrypted-unlock": YES,
"org.freedesktop.udisks2.eject-media": YES,
"org.freedesktop.udisks2.power-off-drive": YES,
//Требуется только для udisks2, при использовании udiskie с другого места (например, systemd):
"org.freedesktop.udisks2.filesystem-mount-other-seat": YES,
"org.freedesktop.udisks2.encrypted-unlock-other-seat": YES,
"org.freedesktop.udisks2.eject-media-other-seat": YES,
"org.freedesktop.udisks2.power-off-drive-other-seat": YES
};
if (subject.isInGroup("storage")) {
return permission[action.id];
}
});
Более строгие примеры смотрите тут. Обратите внимание на настройки org.freedesktop.udisks2.filesystem -*, необходимые чтобы запустить udiskie со службой systemd.
Помощники монтирования
Автоматическое монтирование устройств легко достигается с оболочками udisks. См. также Список приложений#Монтированиеи File manager functionality#Mounting.
Devmon
udevil включает devmon, который совместим с udisks и udisks2.Он использует помощников монтирования со следующим приоритетом:
- udevil (SUID)
- pmount (SUID)
- udisks
- udisks2
Для монтирования устройств с udisks или udisks2 удалите разрешение SUID из udevil:
# chmod -s /usr/bin/udevil
inotify
Вы можете использовать inotify-tools, чтобы контролировать /dev и монтировать диски, когда создается новое блочное устройство. Устаревшие точки монтирования автоматически удаляются udisksd, так, что никаких специальных действий не требуется для удаления.
#!/bin/bash
pattern='sd[b-z][1-9]$'
coproc inotifywait --monitor --event create,delete --format '%e %w%f' /dev
while read -r -u "${COPROC[0]}" event file; do
if [[ $file =~ $pattern ]]; then
case $event in
CREATE)
echo "Settling..."; sleep 1
udisksctl mount --block-device $file --no-user-interaction
;;
DELETE)
;;
esac
fi
done
Советы и рекомендации
Отключить скрытие устройств (udisks2)
По умолчанию Udisks2 скрывает определенные устройства от пользователя. Если это поведение нежелательно или создаёт неудобства, скопируйте /usr/lib/udev/rules.d/80-udisks2.rules в /etc/udev/rules.d/80-udisks2.rules, и удалите следующий раздел в копии:
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # ------------------------------------------------------------------------ # Devices which should not be display in the user interface [...]
Монтировать в /media (udisks2)
По умолчанию, udisks2 монтирует съемные диски в контролируемом каталоге ACL /run/media/$USER/. Если Вы хотите вместо этого монтировать в /media, используйте это правило:
/etc/udev/rules.d/99-udisks2.rules
# UDISKS_FILESYSTEM_SHARED
# == 1: монтировать файловую систему в общий каталог (/media/VolumeName)
# == 0: монтировать файловую систему в частный каталог (/run/media/$USER/VolumeName)
# Смотрите udisks (8)
ENV {ID_FS_USAGE} == «filesystem|other|crypto», ENV {UDISKS_FILESYSTEM_SHARED} = «1»
Монтирование ISO-образа
Для простого монтирования ISO-образов, используйте следующую команду:
$ udisksctl loop-setup -r -f image.iso
Это создаст циклическое устройство и покажет готовый к монтированию ISO-образ. После размонтирования, циклическое устройство будет завершено udev.
Скрыть выбранные разделы
Если Вы хотите скрыть определенные разделы или диски, появляющиеся на рабочем столе, Вы можете создать правило udev, например /etc/udev/rules.d/10-local.rules:
KERNEL == «sda1», ENV {UDISKS_PRESENTATION_HIDE} = «1»
KERNEL == «sda2», ENV {UDISKS_PRESENTATION_HIDE} = «1»
- показать все разделы за исключением sda1 и sda2 на Вашем рабочем столе. Заметьте, если вы используете udisks2, вышеупомянутое правило не будет работать, поскольку UDISKS_PRESENTATION_HIDE больше не поддерживается. Вместо этого используйте UDISKS_IGNORE следующим образом:
KERNEL == «sda1», ENV {UDISKS_IGNORE} = «1»
KERNEL == «sda2», ENV {UDISKS_IGNORE} = «1»
Решение проблем
udisks: Устройства не остаются размонтированными
udisks повторно монтирует устройства или опрашивает их после установленного времени. Это может вызвать неожиданное поведение, например при форматировании дисков, совместном использовании их в виртуальной машине, экономия электроэнергии, или удалении дисков не отсоединенных с помощью --detach.
Отключить опрос относительно данного устройства, например устройства CD/DVD:
# udisks --inhibit-polling /dev/sr0
или для всех устройств:
# udisks --inhibit-all-polling
Для получения дополнительной информации смотрите udisks(8).