Tob*_*ler 9 mount dm-crypt luks cryptsetup
我通过创建了一个加密的容器
#!/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
Run Code Online (Sandbox Code Playgroud)
例如,container
指定给此脚本的文件将包含通过 .ext3 加密的 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
)
Run Code Online (Sandbox Code Playgroud)
并卸载它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
Run Code Online (Sandbox Code Playgroud)
有很多冗余和手动抓取循环设备和映射器,这两者都可以保持匿名。有没有办法简单地做一些类似mount -o luks ~/container /mnt/decrypted
(提示输入密码)和umount /mnt/decrypted
简单的方法?
编辑基本上我对我上面的脚本很满意(虽然错误检查可以改进......),所以
如何
-o luks=~/container
与-o loop ~/loopfile
使用我编写的脚本类似地实现挂载选项?
这可以在不重写的情况下实现mount
吗?或者,是否-t luks -o loop ~/container
可以实施?
事实上,修改mount
是可能的,正如我从mount.ntfs-3g
. 我只是在做猜测,但我怀疑mount -t sometype
结果是调用mount.sometype $DEV $MOUNTPOINT $OPTIONS
,请随时在此处纠正我或引用一些实际文档。特别是该选项-o loop
已经处理过,因此不再需要lopsetup
......
符号链接/创建挂载脚本为/sbin/mount.crypto_LUKS
. 移除 loopdevice 部分,而只是使用-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
Run Code Online (Sandbox Code Playgroud)
现在我只需要运行mount -o loop ~/container /mnt/decrypted
,mount
就会提示我输入密码,然后挂载容器,一旦容器关闭就会自动释放loopdevice。如果解密的文件系统无法挂载,容器将再次关闭,但您当然可以修改它。或者实现一些选项解析而不是将所有内容传递给mount
.
我希望可以通过 实现同样的效果/sbin/umount.luks
,但是umount /mnt/decrypted
(即使使用-t crypto_LUKS
)仍然只执行通常的卸载,让容器保持打开状态。如果你找到一种方法来umount
调用我的dm.umount
脚本,请告诉我......目前,umount
不鼓励直接调用,因为你必须/dev/mapper
手动找出名称cryptsetup luksClose $MAPPER
。如果mount -o loop
之前使用过,至少循环设备会自动释放......