ActiveDirectoryでフォルダリダイレクトや移動ユーザプロファイルを使用する際、利用するフォルダは予め作成しておき権限を適用しておくことが望ましいです。ユーザ数が10名前後であればGUIから操作を行なっても大幅な手間にはなりませんが、何百~何千ユーザもいる環境では手間がかかりすぎます。
こういった場合に重宝するのがCUIから権限操作を行えるcaclsコマンドです。バッチファイルに組み込んでおけば何千とあるファオルダに対しても一括で設定変更を行うことが可能です。
■caclsヘルプ
>cacls ファイルのアクセス制御リスト (ACL) を表示または変更します。 CACLS ファイル名 [/T] [/M] [/S[:SDDL]] [/E] [/C] [/G ユーザー名:アクセス権] [/R ユーザー名 [...]] [/P ユーザー名:アクセス権 [...]] [/D ユーザー名 [...]] ファイル名 ACL を表示します。 /T 現在のディレクトリとすべてのサブディレクトリにある 指定されたファイルの ACL を変更します。 /M ディレクトリにマウントされたボリュームの ACL を変更します。 /S DACL の SDDL 文字列を表示します。 /S:SDDL SDDL 文字列で指定された ACL を置き換えます。 (/E、/G、/R、/P または /D では無効) /E ACL を置き換えずに、ACL を編集します。 /C アクセス拒否エラーを無視して、ACL の変更を続行します。 /G ユーザー名:アクセス権 指定されたユーザーにアクセス権を与えます。 アクセス権: R 読み取り W 書き込み C 変更 (書き込み) F フル コントロール /R ユーザー名 指定されたユーザーのアクセス権を失効させます。 (/E オプションと共に使用)。 /P ユーザー名:アクセス権 指定されたユーザーのアクセス権を置き換えます。 アクセス権: N なし W 書き込み R 読み取り C 変更 (書き込み) F フル コントロール /D ユーザー名 指定されたユーザーのアクセスを拒否します。 複数のファイルを指定するには、ワイルドカードを使用できます。 複数のユーザーを指定できます。 省略形: CI - コンテナ継承。 ACE はディレクトリに継承されます。 OI - オブジェクト継承。 ACE はファイルに継承されます。 IO - 継承のみ。 ACE は現在のファイル/ディレクトリに適用されません。 |
■cacls表示例
>cacls Inetpub C:\Inetpub BUILTIN\Administrators:(OI)(CI)F NT AUTHORITY\SYSTEM:(OI)(CI)F BUILTIN\Administrators:F CREATOR OWNER:(OI)(CI)(IO)F BUILTIN\Users:(OI)(CI)R BUILTIN\Users:(CI)(特殊なアクセス:) FILE_APPEND_DATA BUILTIN\Users:(CI)(特殊なアクセス:) FILE_WRITE_DATA |
まず(OI)とか(CI)とかよく意味のわからないものが表示されてたり、FとかRとか表示されていますが、これは以下の意味になります。
表示 | 意味 |
OI (Object Inheritance) | フォルダの中に作成したファイルに対して、 このアクセス権を継承させることを意味します |
CI (Container Inheritance) | 中に作成したフォルダに対してアクセス権を継承する設定です |
IO (Inheritance Only) | 定義したアクセス権はフォルダの中に作成した ファイルやフォルダにのみ継承され, 上位のフォルダには影響しないことを意味します。 |
アクセス権 | 意味 |
F | フルコントロール |
W | 書き込み可能 |
R | 読み出し可能 |
C | 変更(書き込み)可能 |
N | アクセス権なし |
オプション | 意味 |
/G | 指定したユーザの既存アクセス権に対してアクセス権を追加する |
/P | 指定したユーザの既存アクセス権は削除してから 新たにアクセス権を追加しなおす。 |
/E | 既存のACLの内容はそのままにして新しくACLを追加したり 既存のACLを編集する (これを指定しないと既存ACLは一旦クリアされて 指定したアクセス権のみ設定される) |
/T | 指定したフォルダ以下の全てのファイルフォルダに適用 |
/R | 指定したユーザのアクセス権を削除する |
■使用例
以下の例ではC:\testに対して既存のACLに加えてtestに対する読取権限を与えています。
>cacls C:\test /E /G domain\test:R 処理されたディレクトリ:c:\test |
C:\test以下の全てのファイルフォルダに対して適用うするには/Tオプションを使います。
>cacls C:\test /E /G /T domain\test:R 処理されたディレクトリ:c:\test |
C:\test以下の全てのファイルフォルダに対してアクセス権を削除するには以下のように/Rオプションを使います。
>cacls C:\test /E /R /T domain\test 処理されたディレクトリ:c:\test |