EMCのストレージサーバVNXeでCIFSの共有フォルダサーバを構築しました。
VNXeはActiveDirectory環境が構築されていれば、共有フォルダ上のファイルやフォルダのアクセス権がNTFSボリュームのよう自由自在にできるのが素晴らしいです。
(Linuxを使ってる某サプライメーカーのNASはトップレベルの共有フォルダしかアクセス権設定出来なかったもんで。。。)
で、VNXeで千個近くのフォルダのアクセス権の設定をGUIからやってると日が暮れるので、自動でやってしまおうと思いました。(クライアントの環境はXPです)
一般的なアクセス権はcacls.exe を使ってACL(NTFSアクセス権)を設定するでも書いたように、caclsコマンドが使えます。
また、caclsで設定できない特殊なアクセス権もxcacls.vbsを使って詳細なACL(NTFSアクセス権)を変更するで紹介した xcacls.vbs を使おうとしたのですが、実行すると以下のエラーになりました。
Error -2147023174: occurred in connecting to server. (Msg#3203)
Error description: RPC サーバーを利用できません。
xcacls.vbsは接続先のサーバのWMIをRPCで操作してACLを設定してるわけなので、WindowsOSではないVNXeに対して実行するとエラーになるのも当然ですね。
で、WindowsServer2003(SP2以降),WindowsVistaから付属してる icacls というコマンドなら、RPC使わずに特殊なアクセス権も設定できるということで試そうかと思いました。
しかし、共有フォルダの運用管理しているPCのOSは XP(x86) です。
試しに、Windows7 の端末から icscls.exe (system32配下にあります)を抜いて来ましたが、XP上では動きませんでした。
今度は、WindowsServer2003 SP2(x86) から icscls.exe を抜くと動きそうな感じですが、以下のように表示がうまくされません。
D:\>icacls
ICACLS <
@IT:icaclsコマンドでファイルのアクセス制御リストACLを保存/復元するによると、これはヘルプが上手く表示されないだけで機能的には正しく動作するようです。
しかし、ヘルプが見れないと不便なので、パッチを当てることにしました。
パッチはWindowsServer2003側で適用しないといけません。(再起動は必要有りませんでした)
パッチ適用前と後では icacls.exe のファイル情報は以下のように変わります。
・適用前
バージョン: 5.2.3790.3959
ファイルサイズ: 35,840 バイト
↓
・適用後
バージョン: 5.2.3790.4243
ファイルサイズ: 36,352 バイト
これで、パッチ適用後のサーバから iecacls.exe を抜いてXPで動かすと問題なく実行できました。