gpt4 book ai didi

bash - 如何修改由自定义挂载助手创建的/etc/mtab 条目,以便使用自定义 `umount`?

转载 作者:行者123 更新时间:2023-12-04 05:28:05 24 4
gpt4 key购买 nike

回答我的问题 How to mount a cryptsetup container just with mount ?在 unix.SE,我意识到 mount -t luks将调用脚本 mount.luks ,目前看起来像这样:

#!/bin/bash
set -e
MAPPER=$(mktemp -up /dev/mapper)
cryptsetup luksOpen $1 $(basename $MAPPER)
shift
mount $MAPPER $* || cryptsetup luksClose $(basename $MAPPER)

也就是说,它确定了一个未使用的映射器名称 cryptsetup可用于在解密后(提示输入密码后)挂载 LUKS/dm-crypt 加密设备(我知道 $* 如果涉及子类型,很容易出现递归,请考虑这是一个原型(prototype))。

问题是, mount -t luks /dev/hda /mnt/decrypted 的结果条目在 /etc/mtab看起来像
/dev/mapper/tmp.mpI5ClExf8 on /mnt/decrypted type ext3 (rw,relatime,errors=continue,data=writeback)

这样 umount /dev/hda将失败, umount /mnt/decrypted只会卸载映射器,但会使加密设备保持打开状态。映射器也无关紧要。我想要实现的是有一个条目
/dev/hda on /mnt/decrypted type luks.ext3 (rw,relatime,errors=continue,data=writeback,mapper=/dev/mapper/tmp.mpI5ClExf8)

这样 umount将调用 umount.luks ,这可能类似于
#!/bin/bash
set -e
umount $1
cryptsetup luksClose $MAPPER

(同样,原型(prototype),这只会正确处理 umount /mnt/decrypted 调用, MAPPER 需要从挂载选项中获取)

那么, mount.luks 怎么样?必须修改吗?直接修改 /etc/mtab肯定是个坏主意。 (例如 mount -nmount -f 能以某种方式实现吗?)

最佳答案

我知道这个问题很老,但是我自己在寻找答案时遇到了它。

如果您有足够新的发行版,例如Fedora 20,然后您可以修改 mount.luks 脚本以包含 '-o helper=luks' .

例如:

#!/bin/bash
set -e
MAPPER=$(mktemp -up /dev/mapper)
cryptsetup luksOpen $1 $(basename $MAPPER)
shift
mount -o helper=luks $MAPPER $* || cryptsetup luksClose $(basename $MAPPER)

umount 使用 helper 的值来确定要运行的正确 umount 脚本,类似于 mount 使用 -t 选项的方式。

注意:在 Fedora 20 上,/etc/mtab 是/proc/self/mounts 的符号链接(symbolic link)。如果您 cat/etc/mtab,则不会显示辅助选项。但是,如果您在没有选项的情况下执行 mount,则会出现 helper 选项。

关于bash - 如何修改由自定义挂载助手创建的/etc/mtab 条目,以便使用自定义 `umount`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12952686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com