Encryption
如何在沒有 sudo 權限的情況下檢查 LUKS 設備是否已解鎖?
有沒有辦法在沒有 sudo 權限的情況下檢查 LUKS 設備是否已解鎖?
似乎我找到了一種間接的方法(處理 ’ 輸出的
CleartextDevice
值udisksctl info
),但即使假設它是一個穩定的解決方案,它充其量只是一個 hack。例如,Gnome-disks 不需要 sudo 權限,但它仍然可以解碼 LUKS 設備的鎖定/解鎖狀態。
例如,Gnome-disks 不需要 sudo 權限,但它仍然可以解碼 LUKS 設備的鎖定/解鎖狀態。
GNOME Disks 使用 UDisk 來獲取資訊。沒有什麼不好的,如果設備被鎖定或有效的對象路徑形式為,則該
CleartextDevice
屬性將始終為,其中轉換為,設備映射器明文設備名稱(在 DBus 上編碼)。如果您不想解析輸出,則可以使用僅獲取屬性。它還可以格式化 JSON 格式的輸出,以便於解析。/``/org/freedesktop/UDisks2/block_devices/dm_2d<num>``dm_2d<num>``dm-<num>``-``_2d``udisksctl``busctl``CleartextDevice
鎖定的 LUKS 設備:
$ busctl get-property org.freedesktop.UDisks2 /org/freedesktop/UDisks2/block_devices/sda1 org.freedesktop.UDisks2.Encrypted CleartextDevice -j { "type" : "o", "data" : "/" }
解鎖的 LUKS 設備:
$ busctl get-property org.freedesktop.UDisks2 /org/freedesktop/UDisks2/block_devices/nvme0n1p3 org.freedesktop.UDisks2.Encrypted CleartextDevice -j { "type" : "o", "data" : "/org/freedesktop/UDisks2/block_devices/dm_2d0" }
UDisks DBus API保證穩定,設備的對象路徑始終為
/org/freedesktop/UDisks2/block_devices/<name>
.但是您總是可以簡單地檢查 LUKS 設備是否有一個孩子。明文設備將始終是 LUKS 設備的子設備,因此您可以
lsblk
從 sysfs 或從 sysfs 進行檢查。鎖定的 LUKS 設備:
$ ls /sys/block/sda/sda1/holders/
解鎖的 LUKS 設備:
$ ls /sys/block/nvme0n1/nvme0n1p3/holders dm-0