Я пытаюсь заблокировать доступ к другим разделам с другими файловыми системами на том же физическом жестком диске (layout: gpt), предотвращая монтирование любого раздела без ввода пароля.
FSTAB заботится об использовании mount с паролем. Если его нет в FSTAB, для него потребуется пароль.
Для Nautilus и udisks я пытался udev, задавая команды 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» означает «съемный» (т. Е. Подходит для автоматического монтирования, и обычные пользователи могут монтировать), любое другое значение означает «внутренняя система» (т. Е. Нет автоматического монтирования, и монтировать могут только администраторы).
Спасибо заранее.
P.S. В отличие от этого
KERNEL == "sda10", ENV {UDISKS_PRESENTATION_HIDE} = "1"
не позволяет Наутилусу представить раздел в разделе устройств. Несмотря на то, что сокрытие, вероятно, в любом случае не мешает udisks смонтировать его (не пробовал)
Я думаю, что это должно быть возможно с 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, и документация кажется немного скудной, поэтому вам, возможно, придется немного поиграть, но я думаю, что это правильный способ сделать это. См. здесь , чтобы узнать разрешения политик по умолчанию для действий в Ubuntu.
Решение здесь в Reddit: , Как Ubuntu позволяет монтироваться внутренних блочных устройств без аутентификации?
BTW: Я использую linuxmint-помощника 19.1 (tessa) и 18.3 (Sylvia) оба Выпуски LTS - на основе Ubuntu Бионический Пакет. Я не протестировал в самой человечности.
Просто открытый как корень файл /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 окно запроса аутентификации откроется для монтирования его;
Вы даже не должны перезагружать или выходить из своего сеанса пользователя.
Это работает отлично на меня.