2012/11/21(水)アンチョビ途中経過

漬け始めたばかりなのでまだ生臭いけど、腐敗臭はしない。順調。
実家の台所は不衛生なので不安だったけど、大丈夫のようだ。

別に実家が特別汚いわけじゃなく、独り身の台所は毎日使うわけでもなく、生ごみがたくさん出る料理なんてしないので衛生的なのは当然。自分管理だと貝類は生ごみの前日にしか使わない、とか調整できるし。

2012/11/21(水)CGI実行のためのアカウント設定

言わずもがなだけど、Userdir で CGI を実行する時に
  • Suexec を使うならプライマリグループは無難なものにする
    • wheel とか operator とかにしない
      • ていうか、sudo が一般的な今、operator に所属するのは割と危険
  • Suexec を使わないなら www に所属しておく、実行ファイルは chmod g+x しておく
Suexec の実行可能なディレクトリはビルトインで指定されているので、public_html 以外のディレクトリを使うならそのようにコンパイルする。

2012/11/20(火)日常環境を jailed にした

日ごろ使う環境を jail 上に構築しなおした。
  • 3年に一度くらい、何かの拍子にシステム構築しなおす機会に出くわすんだけど、めんどくさい
    • jail にしておけば、バックアップから何も考えずに書き戻せば使える
  • /etc をバックアップしたいなぁ
    • ファイルベースでの丸ごとバックアップだとリンクやら flag やらの情報が抜けかねないし、ファイル指定でのバックアップで抜けが出ても嫌だ。
    • /etc を zfs パーティションにしたら簡単なんじゃないか?
    • 生環境だと、/etc が起動パーティションにないと rc.conf とか fstab が読めないのでいちいちシングルユーザーに落ちる
    • jail ならできる
インストールディスクとは別に、でかいディスク2本を zfs でミラーリングしてるので、個人使用ならこれで冗長性は十分。ここに日常環境を入れておく。
  • この jail 専用の zfs パーティションを用意して、子パーティションに全部入れる
    • /etc,/usr/local/etc を別パーティションにする
    • zfs jail でこのパーティションを jail にくれてやる
    • バックアップの必要が無い、ports や src は別のパーティションに入れてもいい
新しくシステムを作るときには、option VIMAGE でカーネルを作り直したらもう完了。
VIMAGE が experimental じゃなくなったら手間なしで完了。


そして、jail.conf(5) や、zfs jail するタイミングをどうすればいいんだ、というねたに続く。

2012/11/20(火)dns/bind99

dns/bind99 を使ってみる。
きっかけは、samba4 を試験環境に入れてみた際に、DLZ が有効で kerberos 関連のライブラリとリンクした bind が必要だったので。

REPLACE_BASE="YES" で入れれば楽なんだけど、mergemaster でグダグダ言われそうなので /usr/local に入ってもらう。
src.conf で WITHOUT_BIND="YES" を設定してから world を入れて、mergemaster まで済ませてからのほうが混乱も少ないと思う。nslookup とか、リゾルバ関連のプログラムやライブラリも bind が提供してるので、2つ入ってると色々面倒が起きそう。

/usr/local/etc/rc.d 以下には起動スクリプトがない。
/etc/rc.d/named から起動しようとすると色々と文句を言われる。

rc.conf に下記を追加。
named_program="/usr/local/sbin/named"
rc スクリプトはこのパラメータから /usr/local を切り出して、このパスを基準に後の事は調整してくれるようだ。


いつからかはわからないけど、jail 環境でも chroot できるようになってた。security.jail.mount_devfs_allowed とかがその調整のために出て来たのかな。
prefix がバイナリに埋め込まれてるようなので、$chrootdir/usr/local 以下におく必要があるファイルがあるけど、mtree ではそこまで考慮してくれてないっぽい。

2012/11/19(月)FreeBSD 9.1 に jail.conf(5) が現れた

jail.conf(5) が追加された。
jail の起動は、rc.d/jail を使うかコマンドラインオプションを指定するかだったけれど、jail.conf に設定をまとめることで、コマンドラインでは jail name だけ指定すれば保存されたオプションで jail が起動してくれる。

vnet jail の設定も保存しておけるので操作がかなり簡単になったし、rc.conf に記述するよりもスマートだ。

でも、exec.prestart と exec.start の間に任意の操作を行うインタフェースはないようだ。
zfs jail $jailname $zfs をしたければ、
  • jail -c $jailname persist
  • zfs jail $jailname $zfs
  • jexec $jailname sh /etc/rc
とするしかない。

zfs jail が $jid じゃなくて $jailname を理解してくれるとうれしい。

追記: 9.2では zfs jail が $jailname を理解するようになった。