Я пытаюсь заблокировать доступ к другим разделам с другими файловыми системами на том же физическом жестком диске (разметка: 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.