Найти в Дзене
Tominoff

Настройка VeraCrypt для работы без ввода пароля sudo

Я давненько уже использую контейнер VeraCrypt для безопасного хранения базы данных KeepassXC и всё меня в ней устраивало, кроме одного нюанса. VeraCrypt требует права root для работы с устройствами хранения - при каждом монтировании тома он проверяет наличие прав, и если их нет - заставляет вводить пароль. А если контейнер тоже настроен на пароль, а не аппаратный ключ - так это вдвойне муторно становится. Первая мысль которая у меня возникает когда заходит речь о беспарольном повышении привелегий - polkit. Но, к сожалению, VeraCrypt не умеет с ним работать, а вместо этого использует прямой вызов sudo. Чтобы понять какие команды выполняет VeraCrypt, можно использовать мониторинг процессов: journalctl -f _COMM=sudo В моём случае VeraCrypt выполнял две команды: Команда true используется для минимальной проверки — она ничего не делает, но завершается успешно только при наличии прав root. Кстати, старая версия veracrypt для проверки доступа использовала вызов uptime, а не true Для разреш
Оглавление
Vera запрашивает доступ администратора
Vera запрашивает доступ администратора

Я давненько уже использую контейнер VeraCrypt для безопасного хранения базы данных KeepassXC и всё меня в ней устраивало, кроме одного нюанса.

VeraCrypt требует права root для работы с устройствами хранения - при каждом монтировании тома он проверяет наличие прав, и если их нет - заставляет вводить пароль. А если контейнер тоже настроен на пароль, а не аппаратный ключ - так это вдвойне муторно становится.

Проблема

Первая мысль которая у меня возникает когда заходит речь о беспарольном повышении привелегий - polkit.

Но, к сожалению, VeraCrypt не умеет с ним работать, а вместо этого использует прямой вызов sudo.

Как монтировать разделы в Linux без ввода пароля или щепотка JavaScript для polkit
Tominoff30 декабря 2022

Анализ работы VeraCrypt

Чтобы понять какие команды выполняет VeraCrypt, можно использовать мониторинг процессов:

journalctl -f _COMM=sudo

В моём случае VeraCrypt выполнял две команды:

  • sudo /usr/bin/true — проверка прав доступа
  • sudo /usr/bin/veracrypt --core-service — основной сервис который и монтирует контейнер

Команда true используется для минимальной проверки — она ничего не делает, но завершается успешно только при наличии прав root.

Кстати, старая версия veracrypt для проверки доступа использовала вызов uptime, а не true

Настройка sudoers

Для разрешения выполнения этих команд без пароля нужно создать правило в /etc/sudoers:

{USERNAME} ALL = (root) NOPASSWD: /usr/bin/true, /usr/bin/veracrypt --core-service # Замените {USERNAME} на своё имя пользователя!

Разбор синтаксиса:

  • {USERNAME} — имя пользователя
  • ALL — применяется на всех хостах
  • (root) — команды выполняются от имени root
  • NOPASSWD: — не запрашивать пароль
  • список команд — только указанные команды разрешены без пароля

Безопасность подхода

Такой подход относительно безопасен по нескольким причинам:

  1. Ограниченный доступ — разрешены только конкретные команды и параметры
  2. Полные пути — исключается подмена команд
  3. Конкретный пользователь — правило применяется только к указанному аккаунту

Проверка работы

После добавления правила можно проверить его работу:

sudo visudo -c # проверка синтаксиса
sudo -l -U {USERNAME} # просмотр разрешённых команд

Заключение

Настройка заняла несколько минут, но избавила от необходимости постоянно вводить пароль. Подход может быть полезен для других приложений, требующих частого выполнения операций с правами root.

Главное — сохранять баланс между удобством и безопасностью, разрешая только необходимые команды.