[samba-jp:20415] Re: 共有の権限をWindows側のプログラムで取得したいのですが

YAMASAKI Hiroyuki yamasaki.hiroyuki @ sp.qnes.nec.co.jp
2008年 10月 1日 (水) 22:34:04 JST


山崎と申します。

>WMIを使って接続して、Win32_LogicalShareSecuritySetting という

試したところ、WMIのWin32_LogicalShareSecuritySettingは、対象サーバの
TCP 135(DCOMのRPCポート)にconnectしようとしています。
samba(3.x系)は、TCP 135をサポートしていません。(listenすらしていない)
よって、どうにもならないと思います。

ちなみに、samba4系だと"dcerpc endpoint servers"というパラメータがあるようなので、
動作するかもしれませんが、samba4自体がまだ実用にはなりません。

>しかし、Windows側の標準のツール『コンピュータの管理』から
>“別のコンピュータへ接続”で接続した場合は sambaに対しても
>共有のアクセス許可が見られたりします。
>この情報をプログラムで取得する方法を知りたいのです。

これはまた別プロトコルです。
TCPポート135のRPCではなくて、RPC over SMB(139や445ポート)になっています。
こっちはsambaでも一部実装されています。
おそらく、Win32のNetShareEnum関数(以下)を使うと同じことができると思います。
http://msdn.microsoft.com/ja-jp/library/cc446966.aspx
共有名の一覧くらいは得ることができます。
ただ、共有の「権限」の情報が得られるかどうかはわかりません。

>なお、ファイルやフォルダの権限の場合は
>WMI(Win32_LogicalFileSecuritySettingクラス)ではやはりダメですが、
>.NetFrameworkの DirectoryInfoというライブラリを使えば取得できるようです。

DirectoryInfoは、普通の方法(SMBtrans2 findfirst2)で「ファイル」の情報を得ている
だけです。(「共有」の情報ではなく)
実質、コマンドプロンプトから、dirコマンドで対象ファイルを表示しているのと同じです。



samba-jp メーリングリストの案内