如何在没有 sudo 权限的情况下检查 LUKS 设备是否已解锁?

如何在没有 sudo 权限的情况下检查 LUKS 设备是否已解锁?

有没有办法在没有 sudo 权限的情况下检查 LUKS 设备是否已解锁?

我知道 问题,但所有答案都需要 sudo。

看来我找到了一种间接的方法(处理的输出CleartextDeviceudisksctl info),但即使假设它是一个稳定的解决方案,它充其量只是一个黑客。

例如,Gnome 磁盘不需要 sudo 权限,但它仍然可以解码 LUKS 设备的锁定/解锁状态。

答案1

例如,Gnome 磁盘不需要 sudo 权限,但它仍然可以解码 LUKS 设备的锁定/解锁状态。

GNOME 磁盘使用 UDisk 来获取信息。这没有什么黑客之处,如果设备被锁定,或者以 形式的有效对象路径(其中转换为),则该CleartextDevice属性将始终为设备映射器明文设备名称(在 DBus 上进行编码)。如果您不想解析输出,可以使用仅获取属性。它还可以将输出格式化为 JSON,以便更简单的解析。//org/freedesktop/UDisks2/block_devices/dm_2d<num>dm_2d<num>dm-<num>-_2dudisksctlbusctlCleartextDevice

锁定的 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"
}

U盘 DBus API保证稳定,设备的对象路径将始终为/org/freedesktop/UDisks2/block_devices/<name>

但您始终可以简单地检查 LUKS 设备是否有子设备。明文设备将始终是 LUKS 设备的子设备,因此您可以从lsblksysfs 或从 sysfs 进行检查。

锁定的 LUKS 设备:

$ ls /sys/block/sda/sda1/holders/

解锁的 LUKS 设备:

$ ls /sys/block/nvme0n1/nvme0n1p3/holders
dm-0

答案2

我可能不明白这个问题,但只是看看/dev/mapper/映射是否存在。除非被解密/解锁,否则它不会在那里。

要显示活动驱动器映射驱动器:

for file in $(readlink /dev/mapper/*); do echo $(ls -1 "/sys/block/${file##[./]}/slaves"); done

相关内容