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 を理解するようになった。

2012/02/09(木)棒読みちゃんプラグイン版 SofTail

SofTailを棒読みちゃんのプラグインにしました。
Plugin_SofTail

使いながら、「こいつには画面の僅かな面積すら占有する資格は無いよな」「棒読みちゃんが最初からこの機能を持ってればいいのに」と思っていたので、まさに理想のSofTailができました。

棒読みちゃんのプラグインの作り方を把握するのにダラダラと時間がかかりました。
PBase ってインタフェースに明示されてないのかよ、とか。

ファイルを追いかける実装はSofTailと一緒です。一緒というか、コア部分はDllにしてあって、プラグインのインタフェースを作って ILMerge でガチャコンとくっつけてるだけ。
SofTailの方もダイアログフォームを作ってガチャコンとくっつけてるだけ。