@ Wise-Hawk.com

Blog -マイクロソフトに一喜一憂する日常-

【NTFSアクセス権】 SubinACL とか

|

リムーバブル記憶装置の使用制限の話、イベントログの最大サイズの話と並び、セキュリティがらみで話題になる件数ベスト3に入ってくるのが"NTFSアクセス権"について。

NTFSアクセス権そのものはエンドユーザーにも広く認知されるほどのデファクトになってきていますが、意外とその設定については苦労しているケースが多いようです。特に、ネットワーク経由のスクリプトなどで一括処理したいがどうすればよいのか?という質問は頻出。

上記に対する一言回答としては、cacls, xcacls, SubinACL といったあたりのツールになります。

上記の中で、"cacls" はWindows OS(NT4.0~)として標準ツールですので、すぐにでも使えるというメリットがあります。ただし、いわゆる基本的なACL(どのユーザーに書き込み権限があるか、などのDACL)しか設定できません。

他の2つは、OS標準ではないので追加インストール(無償)する必要がありますが、設定可能項目が増えます。この2つのツールですが、基本的は SubinACL のほうが強力なので、とりあえずこちらだけ覚えておけば問題ないです。(ACLエントリ設定項目の詳細度は、xcaclsのほうが高かったりますが。)
基本ACL(DACL)だけの場合は cacls を利用し、それで要件を満たせない場合(SACLの設定など)は SubinACL を利用すればOKでしょう。

さて、cacls のほうは比較的よく利用されていますし使い方もシンプルですので問題ないと思いますが、SubinACL に関してはひとつ考慮点があります。

<<SubinACLのモジュールは最新のものを利用すること>>
http://www.microsoft.com/downloads/details.aspx?FamilyID=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&displaylang=en

上記URLからダウンロードすることができますが、必ず最新バージョンを利用するようにしましょう。
バージョンアップのたびに設定可能なオプションが増えてきていますので、古いものを利用していると要件を満たせないケースがあります。
# 現在の最新バージョンは、 2004年6月リリースの 5.2.3790.1180 です。

特に問題に陥りやすいのが、下記URLの"Windows Server 2003 Resource Kit Tools"に含まれている SubinACL をそのまま利用しようとするケースです。
http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=en

SubinACL はリソキ・ツールのひとつなので、上記ツールキットをインストールすれば勝手に入ってきます。しかしこのバージョンのSubinACLは、日本語OSなどのダブルバイト環境では動作しない可能性があります。(特にエラーが出るわけではないので分かりにくいのですが…)

補足ですが、SubinACLのモジュールは更新されていますが、同梱されるヘルプファイルについては必ずしも更新されていません。これは何とかしてほしいところですが、実際にはヘルプファイルが更新されていないだけで、"SubinACL /help" で出てくるオプションリストは適切なものが表示されます。

---
というわけで、導入に当たっての考慮点をご紹介しましたので、次はセキュリティ設定としてよく使う使い方のサンプルを。

■ D:\data フォルダの所有権を"user01"に変更する
subinacl /file D:\data /setowner="user01"
# 基本的な構文はこんな感じです。
# 単一のファイルやフォルダのアクセス権を変更する場合は、"/file"オプションを利用します。
# "/setowner"の代わりに、"/owner"でも O.K.

■ D:\data フォルダ配下すべてのファイルとフォルダの所有権を"user01"に変更する
subinacl /subdirectories D:\data\* /setowner="user01"
# フォルダ単位でまとめて実施する場合は、"/subdirectories"オプションを利用します。
# SubinACLでは、[*](アスタリスク)によるワイルドカード指定が可能です。

■ D:\data フォルダに、ファイルアクセス監査(Everyone - Full)の設定を行う
subinacl /file D:\data /sallowdeny=everyone=F
# 成功と失敗両方の監査を設定する場合は"/sallowdeny"オプションを利用します。
# 成功のみの場合は"/sgrant", 失敗のみの場合は"/sdeny"を指定します。
# "=F"のところに"=R"を指定すれば、読み取りだけの監査設定になります。

こんなかんじです。あとはこれらの応用でカバーできるはず。

---
最後にSubinACL関連のKBを2つほど。

【コマンド ラインを使用して複数のサブディレクトリのアクセス許可を編集する】
http://support.microsoft.com/kb/265360/ja

【[HOW TO] あるドメインから別のドメインにオブジェクトを移行する方法】
http://support.microsoft.com/kb/301940/ja

 
copyright(c) 2001- Wise-Hawk.com All rights reserved.