如何僅使用 mount
掛載 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
即,
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 )
並解除安裝它
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
實施嗎?
事實上,修改
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
現在我只需要執行
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