3流プログラマのメモ書き

元開発職→現社内SEの三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

xcaclsが使えないため、icaclsをXPで動かすようにした

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側で適用しないといけません。(再起動は必要有りませんでした)

パッチはMSサポート:>Windows Server 2003 SP2 を実行しているコンピューター上のファイルまたはフォルダーの所有権を設定する Icacls.exe ユーティリティを実行するとエラー メッセージ: アクセスが拒否されました"Windows Server 2003 SP2 を実行しているコンピューター上のファイルまたはフォルダーの所有権を設定する Icacls.exe ユーティリティを実行するとエラー メッセージ: アクセスが拒否されました"から入手可能です。

パッチ適用前と後では icacls.exe のファイル情報は以下のように変わります。

・適用前

バージョン: 5.2.3790.3959

ファイルサイズ: 35,840 バイト

  ↓

・適用後

バージョン: 5.2.3790.4243

ファイルサイズ: 36,352 バイト

これで、パッチ適用後のサーバから iecacls.exe を抜いてXPで動かすと問題なく実行できました。