「Dm-crypt/root 以外のファイルシステムの暗号化」の版間の差分
(同期) |
|||
15行目: | 15行目: | ||
この例では {{ic|/home}} パーティションの暗号化を説明しますが、root 以外の同じようなパーティションなら同じ方法で暗号化できます。 |
この例では {{ic|/home}} パーティションの暗号化を説明しますが、root 以外の同じようなパーティションなら同じ方法で暗号化できます。 |
||
+ | {{Tip|特定のユーザーの {{ic|/home}} ディレクトリをパーティション上に配置することも、全てのユーザーの {{ic|/home}} ディレクトリで共通のパーティションを作成することもできます。}} |
||
− | {{Tip|You can either have a single user's {{ic|/home}} directory on a partition, or create a common partition for all user's {{ic|/home}} partitions.}} |
||
まず、パーティションを完全に消去することでパーティションの準備をしてください。[[Dm-crypt/ドライブの準備#ハードディスクドライブの完全消去]] を参照。 |
まず、パーティションを完全に消去することでパーティションの準備をしてください。[[Dm-crypt/ドライブの準備#ハードディスクドライブの完全消去]] を参照。 |
||
44行目: | 44行目: | ||
# umount /mnt/home |
# umount /mnt/home |
||
# cryptsetup close ''name'' |
# cryptsetup close ''name'' |
||
+ | |||
+ | {{Tip|[[GVFS]] でも暗号化パーティションをマウントできます。GVFS に対応しているファイルマネージャ (例: [[Thunar]]) を使ってパーティションをマウントすると、パスワードダイアログが表示されます。他のデスクトップを使用している場合、{{Aur|zulucrypt}} で GUI が利用できます。}} |
||
=== ロック解除とマウントの自動化 === |
=== ロック解除とマウントの自動化 === |
||
− | パーティションのロックの解除とファイルシステムのマウントを自動化する方法は |
+ | パーティションのロックの解除とファイルシステムのマウントを自動化する方法は複数あります。 |
− | ==== |
+ | ==== 起動時 ==== |
{{ic|/etc/crypttab}} 設定ファイルを使用することで、起動時に systemd によって自動的にファイルが読み取られロックが解除されます。全てのユーザーの home パーティションに共通のパーティションを使用する場合や、他の暗号化ブロックデバイスを自動的にマウントしたい場合に推奨される方法です。 |
{{ic|/etc/crypttab}} 設定ファイルを使用することで、起動時に systemd によって自動的にファイルが読み取られロックが解除されます。全てのユーザーの home パーティションに共通のパーティションを使用する場合や、他の暗号化ブロックデバイスを自動的にマウントしたい場合に推奨される方法です。 |
||
55行目: | 57行目: | ||
詳しくは [[Dm-crypt/システム設定#crypttab]] を見て下さい。設定例は [[Dm-crypt/システム設定#起動時にマウント]] を見て下さい。 |
詳しくは [[Dm-crypt/システム設定#crypttab]] を見て下さい。設定例は [[Dm-crypt/システム設定#起動時にマウント]] を見て下さい。 |
||
− | ==== |
+ | ==== ユーザーのログイン時 ==== |
+ | |||
− | Pam mount を使うことでユーザーのログイン時に解錠できます: パーティションに誰か一人のホームディレクトリがある場合に推奨される方法です。 |
||
+ | ''pam_exec'' と systemd のサービスファイルを使って、ユーザーのログイン時にパーティションを解錠できます: 特定のユーザーのホームディレクトリだけがパーティションにある場合に推奨される方法です。[[dm-crypt/ログイン時にマウント]]を見てください。 |
||
+ | [[pam_mount]] を使ってユーザーのログイン時に解錠することもできます。 |
||
− | [[Pam mount]] を見て下さい。 |
||
== Loop デバイス == |
== Loop デバイス == |
||
70行目: | 73行目: | ||
このコマンドで10メガバイトの容量の {{ic|bigsecret}} ファイルが作成されます。 |
このコマンドで10メガバイトの容量の {{ic|bigsecret}} ファイルが作成されます。 |
||
+ | {{Note|後でコンテナの大きさを[[#loopback ファイルシステムのサイズの変更|変更]]しなくてもよいように、暗号化するファイルの合計容量も大きいサイズを割り当ててください。内部ファイルシステムによって関連付けられるメタデータも保存する必要があるためです。LUKS モードを使用する場合、メタデータヘッダーは1〜2メガバイトも必要になります。}} |
||
− | {{Note|To avoid having to [[#Resizing the loopback filesystem|resize]] the container later on, make sure to make it larger than the total size of the files to be encrypted, in order to at least also host the associated metadata needed by the internal file system. If you are going to use LUKS mode, its metadata header requires one to two megabytes alone.}} |
||
次にデバイスノード {{ic|/dev/loop0}} を作成して、コンテナをマウント・利用できるようにします: |
次にデバイスノード {{ic|/dev/loop0}} を作成して、コンテナをマウント・利用できるようにします: |
||
76行目: | 79行目: | ||
# losetup /dev/loop0 /bigsecret |
# losetup /dev/loop0 /bigsecret |
||
− | {{Note| |
+ | {{Note|{{ic|/dev/loop0: No such file or directory}} というエラーが吐かれる場合、先に {{ic|modprobe loop}} でカーネルモジュールをロードしてください。最近は (カーネル 3.2) ループデバイスは必要に応じて作成されるようになっています。新しいループデバイスの作成は {{ic|# losetup -f}} で出来ます。}} |
ここからの作業は [[#パーティション]] と同じです。違うのはコンテナは既にランダム化されており消去する必要がないということだけです。 |
ここからの作業は [[#パーティション]] と同じです。違うのはコンテナは既にランダム化されており消去する必要がないということだけです。 |
||
+ | {{Tip|''dm-crypt'' のコンテナは高い柔軟性を持っています。[[Tomb]] の特徴とドキュメントを見てください。Tomb は高速かつ柔軟な管理ができる ''dm-crypt'' スクリプトラッパーです。}} |
||
− | {{Tip|Containers with ''dm-crypt'' can be very flexible. Have a look at the features and documentation of [[Tomb]]. It provides a ''dm-crypt'' script wrapper for fast and flexible handling.}} |
||
=== 手動でマウント・アンマウント === |
=== 手動でマウント・アンマウント === |
||
105行目: | 108行目: | ||
# dd if=/dev/urandom bs=1M count=1024 | cat - >> /bigsecret |
# dd if=/dev/urandom bs=1M count=1024 | cat - >> /bigsecret |
||
+ | {{Warning|{{ic|>}} を2つ使っていることに注意してください。1つだけだと現在のコンテナを上書きしてしまいます。}} |
||
− | {{Warning|Be careful to really use '''two''' {{ic|>}}, or you will override your current container.}} |
||
ループデバイスにコンテナをマップ: |
ループデバイスにコンテナをマップ: |
2016年8月14日 (日) 01:59時点における版
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 と systemd のサービスファイルを使って、ユーザーのログイン時にパーティションを解錠できます: 特定のユーザーのホームディレクトリだけがパーティションにある場合に推奨される方法です。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
loopback ファイルシステムのサイズの変更
まず暗号化されたコンテナをアンマウントします:
# umount /mnt/secret # cryptsetup close secret # losetup -d /dev/loop0
次に、追加したいデータ容量を決めてコンテナファイルを拡張します:
# dd if=/dev/urandom bs=1M count=1024 | cat - >> /bigsecret
ループデバイスにコンテナをマップ:
# 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