Буває, що ви носите із собою LUKS‑зашифрований флеш-накопичувач або диск і хочете, щоби він сам розблоковувався та монтувався щойно ви зайшли в систему. Без костилів із root‑скриптами, але надійно. Сьогодні покажу, як це зробити через udev (щоб мати стабільне правило для пристрою) і systemd‑user (щоб усе запускалося саме для вашого користувача після входу).
Що саме ми налаштуємо
Схема така: udev додасть дружній псевдонім для вашого LUKS‑розділу і права доступу користувачу, а systemd‑user (у сеансі користувача) підхопить появу пристрою й виконає команди для розблокування та монтування через udisks2. Це акуратний спосіб для автоматизація задач у робочому середовищі без зайвих привілеїв. Працюємо в термінал Linux, трохи використаємо bash скрипти; за бажанням можна доповнити логікою через cron та systemd timers.
Покрокова інструкція (How‑to)
1) Підготовка пакетів
Потрібні cryptsetup та udisks2 (вони дають зручну без root‑магiю через polkit).
2) Знайдіть свій LUKS‑розділ
Підключіть накопичувач та подивіться ідентифікатори:
Занотуйте UUID розділу з типом crypto_LUKS, наприклад: UUID=1111-2222-3333-4444.
3) Створіть udev‑правило для стабільного імені
Дамо зручний псевдонім і доступ користувачу через uaccess (працює з polkit/seat‑настройками):
Вставте (замініть UUID на свій):
Перезавантажте правила й перевірте:
4) Підготуйте ключ‑файл і додайте його до LUKS
Згенеруємо ключ у вашому $HOME та обмежимо права доступу:
Тепер диск можна розблоковувати без введення пароля — тільки цим ключем, який зберігається у вашому профілі.
5) Створіть systemd‑user юніти
Використаємо user‑інстанс systemd, що стартує після входу. Він відстежуватиме появу /dev/luks/backup_usb через Path‑юнiт і запускатиме сервіс із командами udisksctl.
Файл юніта backup-usb.service:
Path‑юнiт, що стежить за появою пристрою (або вже підключеним пристроєм після входу):
Увімкніть і запустіть:
Готово: після входу користувача, якщо диск підключений, відбудеться автоматичне розблокування і монтування. Якщо ви спочатку зайшли, а потім підключили диск — Path‑юнiт також спрацює.
6) (Необов'язково) Linger для роботи без входу
Якщо хочете, щоб автодія працювала навіть до входу (корисно для фонового сеансу), увімкніть lingering:
Альтернативні способи
- crypttab + systemd‑automount: Додайте запис у
/etc/crypttabі/etc/fstabзx-systemd.automount. Це зручно для серверів, але автодія не прив’язана до входу конкретного користувача. - udev → SYSTEMD_WANTS=... (system): udev може стартувати системний сервіс, який монтує диск. Мінус — потрібен root‑контекст або окремі polkit‑правила для користувача.
- clevis/tang/TPM/FIDO2: Сучасні варіанти без ключ‑файлу. Складніше у налаштуванні, але зручно на корпоративних машинах.
GUI‑спосіб (udisks2 + GNOME Disks)
У GNOME Disks виберіть ваш LUKS‑розділ → піктограма шестерні → Установити параметри автозапуску/монтування → позначте «Розблоковувати при вході». Пароль можна зберегти в ключниці (keyring). Далі udisks2 і середовище робочого столу самі подбають про монтування при кожному вході користувача. Зручно, якщо не хочеться писати скрипти.
FAQ
Чому отримую «The name org.freedesktop.UDisks2 was not provided…»?
Установіть udisks2 і перезапустіть сесію. На серверах без GUI полісі polkit може вимагати підтвердження/правил.
«Not authorized to perform operation» при udisksctl?
Переконайтеся, що сесія графічна/локальна, є polkit‑агент (у більшості DE він є). Або додайте відповідні polkit‑правила, якщо це headless.
Як дізнатися точний mapper після unlock?udisksctl unlock виводить рядок із шляхом. Можна парсити stdout або шукати перший /dev/mapper/luks-*, як у прикладі.
Чи безпечно тримати ключ‑файл у $HOME?
Так, якщо дозволи суворі (600) і $HOME зашифровано (наприклад, LUKS/LVM або fscrypt). Інакше розгляньте пароль у ключниці або апаратні методи (FIDO2/TPM).
Диск не монтується після «гарячого» від'єднання.
Спробуйте вручну: udisksctl unlock ... і udisksctl mount .... Перевірте journalctl --user -u backup-usb.service на помилки.
Можна зробити автоперемонтвання з іншими опціями (uid,gid,umask)?
Так, додайте до команди udisksctl mount параметр --options, наприклад: --options "uid=1000,gid=1000,umask=0077".
Порада від Kernelka
Замість зберігання ключа «як є» розгляньте зберігання його в менеджері паролів (pass) або в GnuPG‑зашифрованому файлі й розшифровуйте його одноразово при вході невеликим скриптом. Це трішки складніше, зате підсилює безпеку 🔐
Підсумок
- udev дає стабільне ім’я пристрою та зручні права доступу.
- systemd‑user запускає розблокування/монтування лише для активного користувача.
- udisksctl спрощує роботу без root і добре дружить із polkit.
- Ключ‑файл у $HOME потребує правильних дозволів і здорового глузду 🙂
- Є зручна GUI‑альтернатива через GNOME Disks, якщо не хочете писати юніти.

Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.