我試圖透過阻止任何不需要密碼的分割區安裝來阻止對同一實體硬碟(佈局:gpt)上具有不同檔案系統的其他分割區的存取。
FSTAB 負責使用帶密碼的掛載。如果 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」表示「可移動」(即有資格自動掛載,一般使用者可以掛載),任何其他值表示「系統內部」(即不自動掛載,只有管理員可以掛載)。
提前致謝。
PS 相反地使用這個
內核==“sda10”,ENV {UDISKS_PRESENTATION_HIDE} =“1”
確實會阻止 Nautilus 在設備部分中顯示分割區。儘管隱藏可能並不能阻止 udisk 無論如何安裝它(還沒有嘗試過)。
答案1
解決方案在 Reddit 上:Ubuntu 如何允許在不進行身份驗證的情況下安裝內部區塊裝置?
順便一提:我使用 linuxmint-mate 19.1 (tessa) 和 18.3 (Sylvia) 這兩個 LTS 版本 - 基於 Ubuntu Bionic 套件。我沒有在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的一些語義,而且文件似乎有點稀疏,所以你可能需要玩一下,但我認為這是正確的方法。看這裡用於 Ubuntu 中操作的預設策略包權限。