Udisks (Русский)

From ArchWiki
Jump to: navigation, search
Состояние перевода: На этой странице представлен перевод статьи Udisks. Дата последней синхронизации: 7 октября 2015. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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

Установка

Существует две версии 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.Он использует помощников монтирования со следующим приоритетом:

  1. udevil (SUID)
  2. pmount (SUID)
  3. udisks
  4. udisks2

Для монтирования устройств с udisks или udisks2 удалите разрешение SUID из udevil:

# chmod-s/usr/bin/udevil
Примечание: После запуска этой команды от имени суперпользователя devmon для слежения за устройствами будет использовать udisks
Совет: Чтобы для автоматического монтирования устройств запустить devmon в фоновом режиме, включите службу devmon@.service, используя имя пользователя в качестве аргумента: devmon@пользователь.service. Следует иметь в виду службы, выполняемые вне сессии. Скорректируйте правила Polkit, где это необходимо, или запускайте devmon из сеанса пользователя (смотрите статью Автозапуск)

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).

Смотрите также