回答我的问题如何仅使用 ? 安装 cryptsetup 容器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 加密设备(我知道$*如果涉及子类型很容易递归,请考虑这是一个原型)在解密之后(在提示输入密码)。
问题是,mount -t luks /dev/hda /mnt/decryptedin的结果条目/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
(同样,原型,这只会umount /mnt/decrypted正确处理调用,MAPPER需要从挂载选项中获取)
那么,mount.luks必须如何修改呢?直接修改/etc/mtab肯定是个坏主意。(例如可以以某种mount -n方式mount -f实现这一目标吗?)