diff --git a/dissect/target/plugins/os/unix/_os.py b/dissect/target/plugins/os/unix/_os.py index 6789f8ee9..f9e4edd85 100644 --- a/dissect/target/plugins/os/unix/_os.py +++ b/dissect/target/plugins/os/unix/_os.py @@ -320,16 +320,14 @@ def parse_fstab( volume_name = None if dev.startswith(("/dev/mapper", "/dev/gpt")): volume_name = dev.rsplit("/")[-1] + elif dev.startswith("/dev/disk/by-uuid"): + dev_id = dev.rsplit("/")[-1] elif dev.startswith("/dev/") and dev.count("/") == 3: # When composing a vg-lv name, LVM2 replaces hyphens with double hyphens in the vg and lv names # Emulate that here when combining the vg and lv names volume_name = "-".join(part.replace("-", "--") for part in dev.rsplit("/")[-2:]) elif dev.startswith("UUID="): dev_id = dev.split("=")[1] - try: - dev_id = uuid.UUID(dev_id) - except ValueError: - pass else: log.warning("Unsupported mount device: %s %s", dev, mount_point) continue @@ -337,4 +335,10 @@ def parse_fstab( if mount_point == "/": continue + if dev_id: + try: + dev_id = uuid.UUID(dev_id) + except ValueError: + pass + yield dev_id, volume_name, fs_type, mount_point diff --git a/tests/test_plugins_os_unix.py b/tests/test_plugins_os_unix.py index d37715b67..33568c60a 100644 --- a/tests/test_plugins_os_unix.py +++ b/tests/test_plugins_os_unix.py @@ -35,6 +35,8 @@ /dev/mapper/vg--main-lv--var /var auto default 0 2 /dev/vg-main/lv-data /data auto default 0 2 + +/dev/disk/by-uuid/af0b9707-0945-499a-a37d-4da23d8dd245 /moredata auto default 0 2 """ # noqa @@ -49,15 +51,16 @@ def test_parse_fstab(): records = list(parse_fstab(fs.path("/etc/fstab"))) - # 10 input records minus + # 11 input records minus # 2 unsupported mount devices (proc, /dev/disk/cloud/azure_resource-part1) # 2 swap partitions # 1 root partition - # = 5 expected results + # = 6 expected results assert set(records) == { (UUID("5d1f1508-069b-4274-9bfa-ae2bf7ffb5e0"), None, "ext4", "/home"), (UUID("28a25297-9825-4f87-ac41-f9c20cd5db4f"), None, "ext4", "/boot"), + (UUID("af0b9707-0945-499a-a37d-4da23d8dd245"), None, "auto", "/moredata"), ("F631-BECA", None, "vfat", "/boot/efi"), (None, "vg--main-lv--var", "auto", "/var"), (None, "vg--main-lv--data", "auto", "/data"),