AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 504230
Accepted
arminfro
arminfro
Asked: 2019-03-05 01:17:50 +0800 CST2019-03-05 01:17:50 +0800 CST 2019-03-05 01:17:50 +0800 CST

挂载镜像文件的加密分区

  • 772

我有一个硬盘的映像备份文件,它由三个分区 ( sudo fdisk -l /mnt/hdd/19_02.img) 组成:

Device                 Start       End   Sectors   Size Type
/mnt/hdd/19_02.img1     2048   1050623   1048576   512M EFI System
/mnt/hdd/19_02.img2  1050624  34686975  33636352    16G Linux swap
/mnt/hdd/19_02.img3 34686976 976773134 942086159 449.2G Linux filesystem

第三个分区 is 类型crypto_LUKS。如果它不会被加密,我可以用 挂载它sudo mount -o loop,offset=$(expr 512 \* 34686976) /mnt/hdd/19_02.img /mnt/img,这会导致mount: /mnt/img: unknown filesystem type 'crypto_LUKS'.

我试过的

sudo cryptsetup luksOpen /mnt/hdd/19_02.img3 img结果是Device /mnt/hdd/19_02.img3 doesn't exist or access denied.

sudo cryptsetup plainOpen --offset=$(expr 512 \* 34686976) /mnt/hdd/19_02.img img询问我的密码,该密码也被接受,但返回了Requested offset is beyond real size of device /mnt/hdd/19_02.img. 好吧,也许cryptsetup确实将偏移值乘以块大小。

sudo cryptsetup plainOpen --offset=34686976 /mnt/hdd/19_02.img img询问我的密码,该密码也被接受并返回正常。但sudo mount /dev/mapper/img /mnt/img抱怨mount: /mnt/img: wrong fs type, bad option, bad superblock on /dev/mapper/img。分析sudo lsblk -f /dev/mapper/img显示没有识别文件系统。

NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
img

加密设备是由LUKS模式创建的,因此使用plainOpen. 但luksOpen不提供--offset选项。

做sudo cryptsetup luksOpen --offset=34686976 /mnt/hdd/19_02.img img的结果cryptsetup: Option --offset is supported only for open of plain and loopaes devices and for luksFormat。(没试过luksFormat,但它设置了 LUKS 设备头并加密了主密钥。)

毕竟这个问题

如何处理cryptsetup luksOpen图像文件上的偏移量?

luks cryptsetup
  • 1 1 个回答
  • 11022 Views

1 个回答

  • Voted
  1. Best Answer
    telcoM
    2019-03-05T01:35:09+08:002019-03-05T01:35:09+08:00

    fdisk这里有点愚蠢:当显示分区的设备名称时,它只取给它的整个磁盘设备的名称,并附加分区号(p如果整个磁盘设备名称的最后一个字符是前缀也是一个数字)。它在不检查该名称的设备是否实际存在的情况下执行此操作。

    换句话说,如果您的图像文件被命名/mnt/hdd/19_02.img并且您正在使用fdisk它直接检查它,那么分区名称/mnt/hdd/19_02.img3完全是虚构的并且无法使用。

    您可以简单地将图像文件附加到循环设备中,并让它自动为您检测分区,而不是尝试手动计算偏移量:

    sudo losetup -P /dev/loop0 /mnt/hdd/19_02.img
    

    如果您的系统足够新以支持-P选项losetup,那么您现在应该有分区设备,例如/dev/loop0p1,/dev/loop0p2并/dev/loop0p3自动出现。

    对于不支持分区循环设备的旧发行版,您可以使用该kpartx命令(如果未单独打包,则可能随device-mapper-multipath工具提供)用于相同目的。在这种情况下,您必须执行两个步骤,并且设备名称会略有不同:

    sudo losetup /dev/loop0 /mnt/hdd/19_02.img
    sudo kpartx -a /dev/loop0
    

    像这样使用时kpartx,分区设备会出现在/dev/mapper,例如/dev/mapper/loop0p1,等等。

    现在你应该可以做到

    sudo cryptsetup luksOpen /dev/loop0p3 img
    

    或者

    sudo cryptsetup luksOpen /dev/mapper/loop0p3 img
    

    取决于您是否使用losetup -P或kpartx处理分区设备。


    完成对映像的访问后,卸载分区设备上所有已挂载的文件系统、sudo cryptsetup luksClose加密映像,然后撤消循环设备绑定:

    如果您使用过kpartx,请先运行sudo kpartx -d /dev/loop0以释放分区设备。如果您使用losetup -P,则不需要此步骤。

    然后,释放循环设备:sudo losetup -d /dev/loop0。

    • 12

相关问题

  • 如何增加位于加密分区之前的分区大小?

  • 为什么“cryptsetup luksFormat”不提示输入密码?

  • 如何从设备中删除 crypto_LUKS

  • 更改加密的lvm根的指定名称?在crypttab中从sdo到sdn?

  • 是否可以在 crypt 映射器中创建分区表?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve