2012-10-18 71 views
2

在回答我的问题How to mount a cryptsetup container just with mount?了在unix.SE,我意识到,mount -t luks将调用脚本mount.luks,目前看起来是这样的:如何修改由自定义安装助手创建的/ etc/mtab条目,以便使用自定义的`umount`?

#!/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/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 

(同样,原型,这只会对待umount /mnt/decrypted呼叫正确,MAPPER需要从挂载选项中获得)

那么,mount.luks如何修改呢?直接修改/etc/mtab当然是一个坏主意。 (例如,mount -nmount -f可以以某种方式实现此目的吗?)

回答

3

我知道这个问题很陈旧,但我在查找答案时遇到了它。

如果您有足够新的发行版,例如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) 

卸除使用助手的价值,以确定正确的卸除脚本运行,类似于安装使用了-t选项的工作方式。

注意:在Fedora 20上,/ etc/mtab是/ proc/self/mounts的符号链接。如果你cat/etc/mtab,助手选项不会显示出来。但是,如果您执行不带选项的挂载,则会显示助手选项。

+0

听起来不错,谢谢!不幸的是,我没有Fedora,但也许各自的补丁也可以应用于其他发行版。 –

相关问题