2006年12月28日木曜日

ADドメインの信頼関係とwinbind

ADドメイン間で信頼関係を結んだ場合、winbindで信頼関係を結んだ先のユーザ情報も取得することができる。
ただし、/etc/krb5.confに信頼関係を結んだ先のドメインコントローラの設定も必要になる。
YASU2003ドメインとW23K2ドメイン間で双方向の信頼関係を結んでいる場合

[realms]
YASU2003.LAN.OSSTECH.CO.JP = {
kdc = 10.0.1.200:88
admin_server = 10.0.1.200:749
default_domain = yasu2003.lan.osstech.co.jp
}
W23K2.LAN.OSSTECH.CO.JP = {
kdc = 10.0.1.201:88
admin_server = 10.0.1.201:749
default_domain = w23k2.lan.osstech.co.jp
}

さらにwinbindのid_rid機能を使うときには、コンパイル時にIDMAP_RID_SUPPORT_TRUSTED_DOMAINSを定義しておかなければ、信頼関係を結んだドメインのRIDマッピングを行うことができない。
idmap backend = rid:"YASU2003=1000-9999 W23K2=10000-20000"




2006年12月27日水曜日

Samba: idmap_ridの注意事項

samba 3.0.23dでwinbindによるユーザアカウントの自動作成で、UIDを自動で割り振るために
idmap_ridの機能を利用してみる。
idmap backend = rid:DOMAIN:1000-10000
としておくと、Windowsサーバに登録されたユーザアカウントのSIDをもとに、
SID+1000(設定値の初期値)で、UIDを自動で割り振ってくれる。
ただし、通常のsambaバイナリだと、allow trusted domains = noを設定しておかなければならず、
信頼関係を結んだドメインのユーザが、Sambaサーバにアクセスできない。

回避策はありそうなので、ちょっと調べてみることにしよう。

idmap_ridについてはここが詳しいかな。
http://techsolutions.hp.com/ja/B8725-90095/ch07s04.html

Windows2003サーバのパスワードポリシー設定方法

http://www.microsoft.com/japan/technet/prodtechnol/windowsserver2003/technologies/directory/activedirectory/stepbystep/strngpw.mspx

kinitとexpect

net ads joinを自動化するために、Kerberosのチケット取得処理をexpectで実行。

expect -c "
spawn kinit Administrator;
expect \"Password for\";
send \"password\r\"
"
とすると、チケットが取れない。
チケットを取り終える前に、expectが終了してしまうから。
最後にsleepを入れておくと、無事チケットが取れるようになった。


2006年12月22日金曜日

SSLBridgeの罠

SSLBridgeの日本語化もだいぶ進んだところで、ファイルのダウンロード機能を試すがどうしてもうまくいかない。
ダウンロードのダイアログが出ない。

コードを読んだ限りでは、おかしいところは無く、あとは考えられるのは、PHPのheader()の前になんらかの出力が行われているだろうということ。

で、header()を呼び出す前に読み込んでいるファイルのうち、手動で作成したconfig.phpに空行が含まれていて、ダウンロード機能が働かなかったことをはっけーん。

これで8割方できたようなものだな。昨日一生懸命コードを読んだかいがあった。



SSLBridgeの日本語化

http://www.sslbridge.com/ の日本語化にチャレンジ。

問題はJavaScriptで日本語表示されたファイル名やフォルダ名を取得したときに、
新規test.doc という名称が
%u65B0%u898ftest.do
という文字列になって、SSLBridge内で扱われるために、日本語のファイルやフォルダを扱えないということ。

%u65B0は、UCS2の「新」で、%u898fはUCS2の「規」に該当する。
ということで、PHPで上記の表記をUTF-8に直す関数をアドホックながら作成してみた。

function ucs2_to_utf8($str){
$utf8str=array();
for ($i=0,$n=0;$iif (substr($str,$i,2) == "%u"){
$i=$i+2;
$ucs2char=pack("H4",substr($str,$i,4));
$i=$i+3;
$utf8char = iconv("UCS-2BE","UTF-8", $ucs2char);
} else {
$utf8char = $str[$i];
}
$utf8str[$n]=$utf8char;
$n++;
}
return join("",$utf8str);
}

本来のUCS2は、ASCII文字も2バイトなので、SSLBridge内で扱われているUCS-2の表記はなんか変だけど、JavaScript経由で渡されるのでしかたない。

この関数を使って、必要な箇所にコード変換をいれてやると、だいたい動きそう。



2006年12月16日土曜日

VMware workstation 5.5.3

CentOS4(i386)上で動作させているVMware workstation 5.5.2だと、Solaris10 06/6(Update2)の64bitカーネルで起動させようとするとエラーが発生して、起動しない。
32bitカーネルで起動するので、実質的に困ってはいないけれども、11月にリリースされた5.5.3で、Guest OSにSolaris10 U2カーネルの32bit/64bitのExperimentalサポートが追加されたので、再チャレンジ。
http://www.vmware.com/support/ws55/doc/releasenotes_ws55.html

やっぱり、まだだめだった。
VMware Workstation 6.0待ちかなぁ。残念。



FreeBSD 6.1のbceドライバ

16GBメモリ搭載マシンだと、PAE対応カーネルにすると、bceドライバのバグ?でカーネルパニック発生。

2006年12月4日月曜日

splitdiff

パッチファイルを、ファイルごとのパッチに分割するコマンド。

$ splitdiff [パッチファイル]