LUKS を使って Linux と Windows の両方から読み書きできる暗号化ボリュームを作成する (承前) Linux

| トラックバック(0)
  • 7. Linux のホームディレクトリの移動

7. Linux のホームディレクトリの移動

7.1. ここでは Debian ベースの cryptsetup パッケージに付属している init スクリプト群を前提にする。ほかのディストリビューションでも、同様の処理ができるはずだ。パッケージインストールしていないのなら、そういったパッケージを参考にごにょごにょする。

7.2. パスフレーズを保存するための外部記憶デバイスを用意する。USB メモリスティックが安価で入手しやすいだろう。入手したらとりあえずフォーマット (ここでは FAT32 とする) を行う。後で述べる UUID を変更するためだ (USB メモリスティックの UUID は 32 ビットしかないので、世の中におなじ UUID をもつデバイスはたくさんありそうだ)。

7.3. 用意したデバイス中にファイル (以下 \hime-home.bin とする) を作成し、パスフレーズを保存する。ファイル中では、パスフレーズの後に改行を入れてはいけない。

7.4. パスフレーズ保存デバイスを一時的にマウントするディレクトリ (以下 /mnt/tmp) を作成する。

  # mkdir /mnt/tmp

7.5. 暗号化ボリュームのホストデバイスと、パスフレーズを保存するデバイスの UUID を調べておく。両者をシステムが認識している状態で以下を実施する。

  # ls -l /dev/disk/by-uuid
合計 0
  lrwxrwxrwx 1 root root 10 2008-12-25 08:47 XXXXXXXXXXXXXXXX -> ../../sda1
  lrwxrwxrwx 1 root root 10 2008-12-24 23:48 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -> ../../sdb1
  lrwxrwxrwx 1 root root 10 2008-12-25 00:07 XXXX-XXXX -> ../../sdc1

sdb1 が暗号化デバイス、新たに追加された sdc1 がパスフレーズ保存デバイスであるはずだ。

7.6. マウント操作を自動化する。

  1. /etc/crypttab に暗号化ボリュームの定義として次の一行を追加する。
      luks1 UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/tmp/hime-home.bin luks
    
    ここで xxxxxxxx-... は、暗号化ボリュームのホストデバイスの UUID である。
  2. /etc/default/cryptdisks で起動時の暗号化ボリュームのマウントを有効にする。またこのとき、cryptsetup が起動時にパスフレーズ保存デバイスをマウントできるようにする。
      CRYPTDISKS_ENABLE=Yes
      CRYPTDISKS_MOUNT="/dev/disk/by-uuid/XXXX-XXXX"
    
    ここで XXXX-... は、パスフレーズ保存デバイスの UUID である。
  3. 暗号化ボリュームの仮のマウント位置 (/mnt/test (なければ作成) とする) を設定。またパスフレーズ保存デバイスのマウント位置として 7.2. で決めた場所を設定。
      /dev/mapper/luks1 /mnt/test   ntfs-3g defaults        0       0
      UUID=XXXX-XXXX  /mnt/tmp        vfat    ro,noauto,umask=77 0    0
    
    luks1 は暗号化デバイスを復号して読み書きする device-mapper 仮想デバイスの名前。XXXX-... はパスフレーズ保存デバイスの UUID。パスフレーズファイルは root でのみ読み取り可能なパーミッションでなければならないが、デバイスが vfat であるため umask プションでパーミッションをエミュレートしている。

7.7. リブートする。暗号化デバイスが /mnt/test にマウントされて読み書きできることを確認する。

7.8 (optional). パスフレーズ保存デバイスは、パスフレーズを読み取ったら umount されるが、ディストリビューションによっては umount してもデバイスは認識されたままになって X のデスクトップなどに現れてしまうかもしれない。そういう場合は明示的に切り離す。多くのディストリビューションには eject(1) というコマンドラインツール (たいてい eject パッケージに含まれる) があるので、これを使って以下のようなスクリプトを作成する:

  #! /bin/sh
  [ "$1" = "start" ] && /usr/bin/eject /dev/disk/by-uuid/XXXX-XXXX > /dev/null 2>&1
  exit 0

これを /etc/rc?.d のランレベル 2 から 5 までに登録しておく。

7.9. /mnt/test にうまくマウントされることを確認したら、

  1. /home/自分 を /mnt/test/自分 にコピーする。
  2. /etc/fstab で /mnt/test を /home に変更する。
  3. リブートする。
  4. テスト。/home に暗号化デバイスがマウントされ、読み書きできることを確認。

これで、/home パーティションは暗号化ボリュームに置き換わった。


続く

トラックバック(0)

トラックバックURL: http://hatuka.nezumi.nu/cgi-bin/mt/mt-tb.cgi/32

このブログ記事について

このページは、Hatuka*nezumiが2008年12月24日 23:59に書いたブログ記事です。

ひとつ前のブログ記事は「LUKS を使って Linux と Windows の両方から読み書きできる暗号化ボリュームを作成する (承前) Windows」です。

次のブログ記事は「UAX #14 と UAX #29 のつじつまあわせ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。