OpenSolaris 2009.06(snv111b)での話。
非グローバルゾーンでsamba(SUNWsmba)を動かそうと思っても、そのままでは下記のようなエラーが/var/samba/log/log.smbdに残ってしまって動かない。smb.confがないのと違ってsvcs的にはonlineになるが、netstat -aで見るとlistenしていないのがわかる。
[2010/06/27 05:44:16, 0] lib/util_sock.c:(822) bind failed on port 445 socket_addr = 0.0.0.0. Error = Permission denied
さらに、nmbd(svcsの名前だとwins)のほうはsvcsで見るとmaintenance状態になっていることがわかる。
これは、非グローバルゾーンでの特権が足りないせいなので、zonecfgを使ってlimitprivを追加してやる。うちでは内部的に使っているサーバなので大変緩く、下記のようにした。(長いけど続けて)
set limitprev = default,file_downgrade_sl,file_upgrade_sl, sys_trans_label,win_colormap,win_config, win_dac_read,win_dac_write,win_devices, win_fontpath,win_mac_read,win_mac_write, win_selection,sys_smb
これでzoneを再起動してやるとsambaがlistenするようになる。セキュリティ的になんでもかんでもつけるのが嫌であれば、ここのglobal: limitprivのところを読んで適宜付け替えるとよい。
余談。opensolarisのブートディスクが壊れたのでこういうことをやっているのだが、zfsは新しくインストールし直した環境からzpool importするだけで構成情報まで含めて一発でとってきてくれるのがなんともうれしい。そういう都合から、sambaまで含めて全部zfs上のzoneに乗せてしまいたいのでこういうことをした次第。グローバルゾーンはハイパーバイザー代わりで十分。:-)