我通过创建了一个加密容器
#!/bin/bash
dd if=/dev/zero of=$1 bs=1 count=0 seek=$2
MAPPER=$(mktemp -up /dev/mapper)
LOOPDEV=$(losetup --find --show $1)
cryptsetup luksFormat $LOOPDEV
cryptsetup luksOpen $LOOPDEV $(basename $MAPPER)
mkfs.ext3 $MAPPER
cryptsetup luksClose $MAPPER
losetup -d $LOOPDEV
即,例如指定给该脚本的文件container
将包含通过 加密的 ext3 文件系统cryptsetup luksFormat
。
为了安装它,我目前使用另一个脚本,例如dm.mount container /mnt/decrypted
:
#!/bin/bash
set -e
MAPPER=$(mktemp -up /dev/mapper)
LOOPDEV=$(losetup --find --show $1)
cryptsetup luksOpen $LOOPDEV $(basename $MAPPER) || losetup -d $LOOPDEV
mount $MAPPER $2 || (
cryptsetup luksClose $MAPPER
losetup -d $LOOPDEV
)
并卸载它dm.umount /mnt/decrypted
:
#!/bin/bash
set -e
MAPPER=$(basename $(mount | grep $1 | gawk ' { print $1 } '))
LOOPDEV=$(cryptsetup status $MAPPER | grep device | gawk ' { print $2 } ')
umount $1
cryptsetup luksClose $MAPPER
losetup -d $LOOPDEV
有很多冗余,需要手动获取循环设备和映射器,这两者都可以保持匿名。有没有一种方法可以简单地执行类似mount -o luks ~/container /mnt/decrypted
(提示输入密码短语)和umount /mnt/decrypted
简单方法的操作?
编辑基本上我对上面的脚本很满意(尽管错误检查可以改进......),所以
如何像使用我编写的脚本
-o luks=~/container
一样实现挂载选项?-o loop ~/loopfile
不重写就可以实现吗mount
?或者,可以-t luks -o loop ~/container
实施吗?
答案1
事实上,修改mount
是可能的,正如我从mount.ntfs-3g
.我只是在猜测,但我怀疑mount -t sometype
会导致调用mount.sometype $DEV $MOUNTPOINT $OPTIONS
,请随时在此处纠正我或引用一些实际文档。特别是该选项-o loop
已经被处理过,所以不再需要lopsetup
......
符号链接/创建安装脚本为/sbin/mount.crypto_LUKS
.删除循环设备部分,只使用开关-o loop
。这是我的/sbin/mount.crypto_LUKS
:
#!/bin/bash
set -e
if [[ $(mount | grep ${2%%/} | wc -l) -gt 0 ]]; then
echo "Path $2 is already mounted!" >&2
exit 9
else
MAPPER=$(mktemp -up /dev/mapper)
cryptsetup luksOpen $1 $(basename $MAPPER)
shift
mount $MAPPER $* || cryptsetup luksClose $(basename $MAPPER)
fi
现在我只需要运行mount -o loop ~/container /mnt/decrypted
,mount
就会提示我输入密码,然后挂载容器,容器关闭后会自动释放循环设备。如果解密的文件系统无法挂载,容器将再次关闭,但您当然可以修改它。或者实现一些选项解析,而不是将所有内容传递给mount
.
我希望通过 可以实现相同的效果/sbin/umount.luks
,但是umount /mnt/decrypted
(即使使用-t crypto_LUKS
)仍然只进行通常的卸载,使容器保持打开状态。如果您找到一种方法来umount
调用我的dm.umount
脚本,请告诉我...目前,umount
不鼓励直接调用,因为您必须/dev/mapper
手动找出名称cryptsetup luksClose $MAPPER
。至少循环装置如果mount -o loop
之前用过的话会自动释放...
答案2
pam_挂载,可从sourceforge获得,附带了有用的 mount.crypto_LUKS 和 umount.crypto_LUKS ,它们克服了其他发布者提供的脚本的一些缺点。