Как потребовать монтирование с паролем других внутренних разделов жесткого диска для всех приложений в стиле монтирования (с udev)

Как потребовать монтирование с паролем других внутренних разделов жесткого диска для всех приложений в стиле монтирования (с udev)

Я пытаюсь заблокировать доступ к другим разделам с другими файловыми системами на том же физическом жестком диске (разметка: gpt), запретив монтирование любого раздела без запроса пароля.

FSTAB заботится об использовании монтирования с паролем. Если его нет в FSTAB, потребуется пароль.

Для Nautilus и udisks я пробовал udev setting команды ENV{UDISKS_ следующим образом:

KERNEL=="sda10", ENV{UDISKS_PRESENTATION_NOPOLICY}="1", ENV{UDISKS_SYSTEM_INTERNAL}="1"

Я проверил, что ENV добавлены с помощью

udevadm info --name="/dev/sda10" --query=all

Но это, похоже, не мешает (не gksudo) Nautilus или udisks монтировать раздел при нажатии.

Я хотел бы, чтобы он запрашивал пароль при попытке. Как указано здесь:

http://manpages.ubuntu.com/manpages/precise/man7/udisks.7.html

Если установлено, это переопределит обычное определение на основе типа шины, считается ли устройство «внутренним устройством системы». «0» означает «съемное» (т. е. подлежащее автоматическому монтированию, и обычные пользователи могут монтировать), любое другое значение означает «внутреннее устройство системы» (т. е. автоматическое монтирование не предусмотрено, и монтировать могут только администраторы).

Заранее спасибо.

PS В отличие от этого, используя

ЯДРО=="sda10", ОКРУЖЕНИЕ{UDISKS_PRESENTATION_HIDE}="1"

не мешает Nautilus отображать раздел в разделе устройств. Хотя скрытие, вероятно, не мешает udisks монтировать его в любом случае (не пробовал).

решение1

Решение здесь, на Reddit:Каким образом Ubuntu позволяет монтировать внутренние блочные устройства без аутентификации?

BTW: Я использую linuxmint-mate 19.1 (tessa) и 18.3 (Sylvia) оба LTS Releases - основаны на Ubuntu Bionic Package. Я не тестировал в самом Ubuntu.

Просто откройте файл как root /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pklaи измените строку

Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*;org.freedesktop.udisks2.filesystem-mount-system;org.freedesktop.udisks2.encrypted-unlock-system;org.freedesktop.udisks2.filesystem-fstab;

к этому:

Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*;org.freedesktop.udisks2.encrypted-unlock-system;org.freedesktop.udisks2.filesystem-fstab;

Как видите, просто удалите эту часть строки:

org.freedesktop.udisks2.filesystem-mount-system;

Таким образом, при каждом запросе на монтирование раздела в Caja будет открываться окно запроса аутентификации для его монтирования;

Вам даже не нужно перезагружать или выходить из сеанса пользователя.
У меня все работает идеально.

решение2

Я думаю, что это должно быть возможно с помощью PolicyKit/polkitправил, а не путем udevнепосредственного редактирования правил.

По умолчанию в версии 12.04 монтирование разрешено.

user@precise:~$ pkaction --verbose --action-id org.freedesktop.udisks.filesystem-mount
org.freedesktop.udisks.filesystem-mount:
  description:       Mount a device
  message:           Authentication is required to mount the device
  vendor:            The udisks Project
  vendor_url:        http://udisks.freedesktop.org/
  icon:              drive-removable-media
  implicit any:      no
  implicit inactive: no
  implicit active:   yes

Должно быть возможно создать локальное правило, которое переопределяет это (см. man pklocalauthority), и требует аутентификации для выполнения этого действия. Создайте файл с именем, например, /etc/polkit-1/localauthority.conf.d/50-disable-automount.pklaсодержащий:

[Disable automount]
Identity=unix-user:*
Action=org.freedesktop.udisks.filesystem-mount
ResultAny=auth_admin
ResultInactive=auth_admin
ResultActive=auth_admin

Возможно, вам придется изучить некоторые дополнительные детали (например, существуют более конкретные действия, такие как , org.freedesktop.udisks.filesystem-mount-system-internalкоторые предположительно применяются только к вашим локальным жестким дискам, а не к USB-накопителям, и вы можете выбрать либо , auth_adminлибо , auth_admin_keepв зависимости от того, хотите ли вы, чтобы недавно введенный пароль был достаточным).

Я не совсем уверен в некоторых аспектах семантики policykit, и документация, похоже, немного скудная, так что вам, возможно, придется немного поиграться, но я думаю, что это правильный способ сделать это. Смотритездесьдля разрешений policykit по умолчанию для действий в Ubuntu.

Связанный контент