Udisks (Русский) - ArchWiki

# Udisks (Русский)

Ссылки по теме

- udev (Русский)
- mount (Русский)
- Polkit
- Функциональность файлового менеджера

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

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

## Установка

Существует две версии udisks по имени udisks и udisks2. Разработка udisks прекратилась в пользу udisks2. [1]

udisksd (udisks2) и udisks-демон (udisks) запускаются по требованию D-Bus и не должны быть включены явно (см. `man udisksd` и `man udisks-daemon`). Ими можно управлять через командную строку с помощью udisksctl и udisks, соответственно. Для получения дополнительной информации смотрите `man udisksctl` и `man udisks`.

## Настройка

Действия пользователя, на выполнение и использование 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[broken link: invalid section]. См. также Список приложений#Монтирование[broken link: invalid section] и 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

Для получения дополнительной информации смотрите `man udisks`.

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

- Gentoo wiki udisks (Англ.)
- Введение в udisks (Англ.)

Categories:

- Hardware detection and troubleshooting (Русский)
- Русский

Hidden category:

- Pages with broken section links