暗号化されたコンテナを作成しました
#!/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
には、cryptsetup luksFormat
で暗号化されたext3ファイルシステムが含まれます。
マウントするには、現在別のスクリプトを使用しています。たとえば、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.ntfs-3g
の存在から学んだように、mount
の変更は可能です。私は当て推量しか行っていませんが、mount -t sometype
の結果としてmount.sometype $DEV $MOUNTPOINT $OPTIONS
が呼び出されると思われるので、ここで修正するか、実際のドキュメントを引用してください。特にオプション-o loop
はすでに処理されているので、lopsetup
はもう必要ありません...
Symlink /マウントスクリプトを/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
を使用した場合、少なくともループデバイスは自動的に解放されます...
pam_mount、 sourceforgeから入手可能 には、他の投稿者が提供したスクリプトのいくつかの欠点を克服する便利なmount.crypto_LUKSおよびumount.crypto_LUKSが同梱されています。