仕事の関係で、Windows2003サーバをsambaに置き換えちゃおうという話が出た。
んで、仮想環境のFreeBSDにsambaいれてあれこれ試してたのだけれど、
どうやってもグループ毎にACLが設定できない。
たとえば、管理職と一般社員、監査役なんかでグループを分けて、
Aフォルダは管理職と一般社員がアクセスできて、
Bフォルダは管理職だけ、アクセスできる。みたいな話をやりたい。
アクセス権をそれぞれ振ってみたいな話をやりたい、
vfs object の acl_tdb と acl_xattr を見つけた時に、楽勝じゃん。と、思ったのだけれど。
ふつーに設定して、Windowsから共有フォルダを見て、セキュリティタブから権限を
設定しようとすると……
「アクセスが拒否されました」
「アクセスが拒否されました」
「アクセスが拒否されました」
と、一向に進まない。
こういう時って、フォルダ別に共有を作って、@groupみたいにグループ全部
書いていく方法が一般的なのだろうか?
で、調べる、smb.confのマニュアルやら、netコマンドのリファレンスだのを
しらみつぶしに見て、試して、試して、ためして、タメシテ
が、やっぱりできない。
で、ACLの権限関係のログを吐かせてみることにした
しかし、なんでsambaのログってこんなにカオスなんだろうか……
結局、それからさらに検索して、こんな情報に行き着いた。
そのあと、なんかそれっぽい予感がしたので、さらに単語を変えて検索。
この情報に行き着く。
行き着いた情報だけまとめると、ACL設定時のACEが3つ以外の場合、
その要求はコケる…………
試した結果、vfs objects の acl_tdb、acl_xattr があろうとなかろうと、
このルートに入り、問答無用で失敗する。
ちなみに、このコード、現行最新版の3.6.5ではもちろん、4.0のAlpha22でも入ってる。
失敗時に投げてた、ACE情報はどんなもんかと、”canon_ace index”で引っかけた
結果が以下。
ACEが7つ。そりゃ成功するわけないわ。
vfs_object の未設定状態や、acl_xattr なら、無制限にACE書き込ませるのは
なんとなくヤバいような気がするのだけれど、 acl_tdb はファイルに書くんだから、
大丈夫だと思うんだけどなぁ……
とりあえず、ソースを書き換えて、portsをちょろまかし、portupgradeで更新。
ぱっと見のACLのアクセス権がきちんと設定できていることを確認する。
業務時間が終わったので、権限がきちんと動くかは未確認。
まぁ、おいおいやればいいさ。
けど、これ、エロイ人に説明できんわ。
動作保障がものっそい面倒くさいもん。
※追記
CentOS5.8 だと、同じ権限要求があっさり通る。
ログを見ると、ACEが3つにマージされて成功するようになってるようだ。
全然そんなことなかった、やっぱダメだ。
コメントを残す