「Dm-crypt/root 以外のファイルシステムの暗号化」の版間の差分
(同期) |
(同期) |
||
32行目: | 32行目: | ||
ファイルシステムを {{ic|/home}} にマウントするか、誰か一人のユーザーにだけアクセス可能にしたい場合は {{ic|/home/''username''}} にマウントします。[[#手動でマウント・アンマウント]] を見て下さい。 |
ファイルシステムを {{ic|/home}} にマウントするか、誰か一人のユーザーにだけアクセス可能にしたい場合は {{ic|/home/''username''}} にマウントします。[[#手動でマウント・アンマウント]] を見て下さい。 |
||
+ | {{Tip|一度アンマウントしてからマウントしてみて、正しくマッピングされているか確認してください。}} |
||
− | {{Tip|Unmount and mount once to verify that the mapping is working as intended.}} |
||
=== 手動でマウント・アンマウント === |
=== 手動でマウント・アンマウント === |
||
59行目: | 59行目: | ||
==== ユーザーのログイン時 ==== |
==== ユーザーのログイン時 ==== |
||
− | ''pam_exec'' |
+ | ''pam_exec'' を使って、ユーザーのログイン時にパーティションを解錠できます (''cryptsetup open''): 特定のユーザーのホームディレクトリだけがパーティションにある場合に推奨される方法です。[[dm-crypt/ログイン時にマウント]]を見てください。 |
[[pam_mount]] を使ってユーザーのログイン時に解錠することもできます。 |
[[pam_mount]] を使ってユーザーのログイン時に解錠することもできます。 |
||
73行目: | 73行目: | ||
このコマンドで10メガバイトの容量の {{ic|bigsecret}} ファイルが作成されます。 |
このコマンドで10メガバイトの容量の {{ic|bigsecret}} ファイルが作成されます。 |
||
− | {{Note|後でコンテナの大きさを[[# |
+ | {{Note|後でコンテナの大きさを[[Dm-crypt/デバイスの暗号化#ループバックファイルシステム|変更]]しなくてもよいように、暗号化するファイルの合計容量も大きいサイズを割り当ててください。内部ファイルシステムによって関連付けられるメタデータも保存する必要があるためです。LUKS モードを使用する場合、メタデータヘッダーは1〜2メガバイトも必要になります。}} |
次にデバイスノード {{ic|/dev/loop0}} を作成して、コンテナをマウント・利用できるようにします: |
次にデバイスノード {{ic|/dev/loop0}} を作成して、コンテナをマウント・利用できるようにします: |
||
97行目: | 97行目: | ||
# cryptsetup --type luks open /dev/loop0 secret |
# cryptsetup --type luks open /dev/loop0 secret |
||
# mount -t ext4 /dev/mapper/secret /mnt/secret |
# mount -t ext4 /dev/mapper/secret /mnt/secret |
||
− | |||
− | === loopback ファイルシステムのサイズの変更 === |
||
− | まず暗号化されたコンテナをアンマウントします: |
||
− | # umount /mnt/secret |
||
− | # cryptsetup close secret |
||
− | # losetup -d /dev/loop0 |
||
− | |||
− | 次に、追加したいデータ容量を決めてコンテナファイルを拡張します: |
||
− | |||
− | # dd if=/dev/urandom bs=1M count=1024 | cat - >> /bigsecret |
||
− | |||
− | {{Warning|{{ic|>}} を2つ使っていることに注意してください。1つだけだと現在のコンテナを上書きしてしまいます。}} |
||
− | |||
− | ループデバイスにコンテナをマップ: |
||
− | # losetup /dev/loop0 /bigsecret |
||
− | # cryptsetup --type luks open /dev/loop0 secret |
||
− | |||
− | その後、コンテナの暗号化された部分をコンテナファイルの最大サイズまでリサイズ: |
||
− | # cryptsetup resize secret |
||
− | |||
− | 最後に、ファイルシステムのチェックを実行して、問題なければ、リサイズを行います (例: ext2/3/4): |
||
− | # e2fsck -f /dev/mapper/secret |
||
− | # resize2fs /dev/mapper/secret |
||
− | |||
− | またコンテナをマウントすることができます: |
||
− | # mount /dev/mapper/secret /mnt/secret |
2017年10月12日 (木) 00:16時点における版
dm-crypt に戻る。
以下は dm-crypt で root 以外のファイルシステムを暗号化するサンプルです。
目次
概要
セカンダリファイルシステムの暗号化は基本的に重要なデータだけを保護します。オペレーティングシステムやプログラムファイルは暗号化されないままです。USB ドライブなどの外部メディアを暗号化したいときは、別のコンピュータに安全に持っていけるようになるので便利です。また、アクセスする人ごとに暗号化するデータを選択することもできます。
dm-crypt はブロックレベルの暗号化レイヤーなので、完全なデバイスやパーティション、loop デバイスなどしか暗号化できません。個別のファイルを暗号化するには、eCryptfs や EncFS などのファイルシステムレベルの暗号化レイヤーが必要です。個人データを守る方法に関する一般的な情報はディスク暗号化を見て下さい。
パーティション
この例では /home
パーティションの暗号化を説明しますが、root 以外の同じようなパーティションなら同じ方法で暗号化できます。
まず、パーティションを完全に消去することでパーティションの準備をしてください。Dm-crypt/ドライブの準備#ハードディスクドライブの完全消去 を参照。
そして次のコマンドで LUKS ヘッダーを設定:
# cryptsetup options luksFormat device
device
は先に作成したパーティションに置き換えて下さい。options
に利用できるオプションなどは Dm-crypt/デバイスの暗号化#LUKS モードの暗号化オプション を見て下さい。
暗号化されたパーティションにアクセスできるようにするには、デバイスマッパーでロックを解除します:
# cryptsetup open device name
パーティションを解錠した後は /dev/mapper/name
から利用できるようになります。お好きなファイルシステムを作成してください:
# mkfs.fstype /dev/mapper/name
ファイルシステムを /home
にマウントするか、誰か一人のユーザーにだけアクセス可能にしたい場合は /home/username
にマウントします。#手動でマウント・アンマウント を見て下さい。
手動でマウント・アンマウント
パーティションをマウントするには:
# cryptsetup --type luks open device name # mount -t ext4 /dev/mapper/name /mnt/home
パーティションをアンマウントするには:
# umount /mnt/home # cryptsetup close name
ロック解除とマウントの自動化
パーティションのロックの解除とファイルシステムのマウントを自動化する方法は複数あります。
起動時
/etc/crypttab
設定ファイルを使用することで、起動時に systemd によって自動的にファイルが読み取られロックが解除されます。全てのユーザーの home パーティションに共通のパーティションを使用する場合や、他の暗号化ブロックデバイスを自動的にマウントしたい場合に推奨される方法です。
詳しくは Dm-crypt/システム設定#crypttab を見て下さい。設定例は Dm-crypt/システム設定#起動時にマウント を見て下さい。
ユーザーのログイン時
pam_exec を使って、ユーザーのログイン時にパーティションを解錠できます (cryptsetup open): 特定のユーザーのホームディレクトリだけがパーティションにある場合に推奨される方法です。dm-crypt/ログイン時にマウントを見てください。
pam_mount を使ってユーザーのログイン時に解錠することもできます。
Loop デバイス
ループデバイスを使って util-linux の標準ツール losetup
でファイルにブロックデバイスをマップすることができます。ファイルにはファイルシステムが含まれ、他のファイルシステムと同じように使うことが可能です。暗号化されたコンテナを作成するツールとしては TrueCrypt が有名ですが、ループデバイスファイルシステムを使って LUKS で暗号化することで同じような機能が実現できると考えてください。
まず、適切な乱数生成器を使用して、暗号化するコンテナを作成します:
# dd if=/dev/urandom of=/bigsecret bs=1M count=10
このコマンドで10メガバイトの容量の bigsecret
ファイルが作成されます。
次にデバイスノード /dev/loop0
を作成して、コンテナをマウント・利用できるようにします:
# losetup /dev/loop0 /bigsecret
ここからの作業は #パーティション と同じです。違うのはコンテナは既にランダム化されており消去する必要がないということだけです。
手動でマウント・アンマウント
コンテナをアンマウントするには:
# umount /mnt/secret # cryptsetup close secret # losetup -d /dev/loop0
コンテナをマウントするには:
# losetup /dev/loop0 /bigsecret # cryptsetup --type luks open /dev/loop0 secret # mount -t ext4 /dev/mapper/secret /mnt/secret