2

私の質問に答えて cryptsetup コンテナをマウントする方法はmount? unix.SE で、mount -t luksが script を呼び出すことに気付きましたmount.luks。これは現在次のようになっています。

#!/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問題は、 inの結果のエントリが次の/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)

そのようなものumountumount.luks、次のようなものかもしれません

#!/bin/bash
set -e
umount $1
cryptsetup luksClose $MAPPER

(繰り返しますが、プロトタイプです。これはumount /mnt/decrypted呼び出しを正しく処理するだけMAPPERであり、マウント オプションから取得する必要があります)

では、どのようmount.luksに変更する必要がありますか?直接変更する/etc/mtabことは確かに悪い考えです。(たとえばmount -nmount -fこれを何とか達成できますか?)

4

1 に答える 1

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)

umount は helper の値を使用して、実行する適切な umount スクリプトを決定します。これは、mount が -t オプションで機能するのと同様です。

注: Fedora 20 では、/etc/mtab は /proc/self/mounts へのシンボリック リンクです。/etc/mtab を cat すると、ヘルパー オプションは表示されません。ただし、オプションなしでマウントを実行すると、ヘルパー オプションが表示されます。

于 2014-06-10T14:48:35.167 に答える