初心者OpenBSDユーザになってから しばらく経過。そろそろ本格的な仕事にも使う段階になって来た。
ふつーホームディレクトリは暗号化
するよね? しるしる。
てことで、NetBSD cgd(4)ののりでやろうとしたが、ああー、OpenBSD は
Nでいうところの /etc/rc.d/cgd つまり、起動パーティション以外の
暗号化ディスクの活性化スクリプトがないんだね。てことで、
以下手順。
おおむね、ここにあるとおり:
http://www.itrestauracion.com.ar/?p=2378
たとえばパーティション構成こんな感じ。
Filesystem Size Used Avail Capacity Mounted on /dev/sd0a 1005M 178M 777M 19% / /dev/sd0d 3.9G 136M 3.6G 4% /tmp /dev/sd0e 34.3G 1.6G 31.0G 5% /var /dev/sd0f 2.9G 955M 1.9G 33% /usr /dev/sd0g 1005M 254M 701M 27% /usr/X11R6 /dev/sd0h 19.7G 8.8G 9.9G 47% /usr/local /dev/sd0i 2.0G 1.1G 758M 60% /usr/src /dev/sd0j 5.9G 2.0K 5.6G 0% /usr/obj /dev/sd0k 39.4G 25.5G 11.8G 68% /home /dev/sd0l 256G 16.2G 227G 7% /opt
初期インストールで /home を普通に作っちゃったよ。 いったん別のパーティション(↑なら/optとか)に待避して作り直す。
cd / doas -s : 適当にバックアップを取る rsync -axH /home /opt umount /home : 適当に書き潰す dd if=/dev/zero of=/dev/rsd0k bs=1m count=100
さてここから暗号化作業。元のパーティション(この例ではsd0k)の ディスクラベルを RAID に変えてから bioctl でCRYPTO対象とする。
disklabel -E sd0 m k offset: [183711680] size: [83886080] FS type: [4.2BSD] RAID w q
いざ bioctl
bioctl -c C -l sd0k softraid0
New passphrase:
Re-type passphrase:
softraid0: CRYPTO volume attached as sd1
「sd1にくっつけたよ」ってことなので、新規にパーティションを作る。 home だから h パーティションにしとこうかねえ。 まず痕跡を分からなくするためゼロを書き尽くしてからnewfsする。
dd if=/dev/zero of=/dev/rsd1h bs=1m dd: /dev/rsd1h: short write on character device dd: /dev/rsd1h: end of device 40960+0 records in 40959+1 records out 42949394432 bytes transferred in 110.450 secs (388855351 bytes/sec) disklabel -E sd1 a h size: [83885552] FS type: [4.2BSD] sd1*> w sd1> q
newfsして /etc/fstab の /home を書き変える。 ディスクのUUIDで書いた方が間違いがないので調べてから。
newfs -O2 /dev/rsd1h : : disklabel sd1 | grep duid duid: abcdabcdabcdabcd # これをfstabに vi +/home /etc/fstab
/home の行をこんな感じにする。ポイントは、 起動時にfsckやmountをしないように noauto と 0 にする。
abcdabcdabcdabcd.h /home ffs nodev,nosuid,softdep,noauto 0 0
で、………だ。
これを起動時に bioctl して fsck して mount するようなのを rc.local に書いておく。上記URLを参考にうちはこんな風にした。
for trial in 1 2 3 4 5; do bioctl -c C -l abcdabcdabcdabcd.k softraid0 && break sleep 1 done fsck -py /home mount /home
これって、rc.local のタイミングだから、すでに sshd が上がってるんだな。 てことは、リモートでノートPCをリブートしちゃって、「ぎゃあ、 暗号化ディスクのパスフレーズ入力があるから立ち上がらないじゃーん(T_T)」 てときに、とりあえずホームディレクトリなしでログインできるから 手元にPCがなくってもリブートできて素敵じゃないか!
ああ、てことは NetBSD でも cgd=NO にしておいて、あとから cgdconfig するのを書いとけばよかったのか。ちゃんちゃん。
もっともディスク暗号化は ThinkPad を見事にサスペンド/ハイバネートできる OpenBSD の場合意味が薄いかもしれない。ということで、xidle動かすか。 ~/.xinitrc あるいは ~/.xsession に
xidle &
を足しておき、/etc/apm/suspend とか /etc/apm/hibernate に
pkill -USR1 xidle
を入れておくとよいようだ。/etc/skel/ にも入れておくのがよいかも。