バッチファイル(ファイルのセキュリティ_icacls_2_高度なアクセス許可)

■セキュリティ設定のコマンド(icacls)の続き。
icaclsで特定の権限をつける方法があったので、それを試してみた。単純にファイルを作成して、付いている権限を削除した後に、別ユーザ(User02)に下記の権限を付ける。

特定の権限をコンマ区切りでかっこ内に列挙:
DE - 削除
RC - 読み取り制御
WDAC - DAC の書き込み
WO - 所有者の書き込み
S - 同期
AS - システム セキュリティへのアクセス
MA - 無制限
GR - 一般的な読み取り
GW - 一般的な書き込み
GE - 一般的な実行
GA - 一般的なすべての操作
RD - データの読み取り/ディレクトリの一覧表示
WD - データの書き込み/ファイルの追加
AD - データの追加/サブディレクトリの追加
REA - 拡張属性の読み取り
WEA - 拡張属性の書き込み
X - 実行/スキャン
DC - 子の削除
RA - 属性の読み取り
WA - 属性の書き込み

表示すると、ほぼ付けた権限通りの文字列となっているが、GR, GW, GE, GAは他の文字列の組み合わせや他の表示になっている。

プロパティの高度なアクセス許可を見てみると下記のようになっていた。上の番号はファイル名の下2桁の番号。

「一般的なxxx」と書かれているもの以外は、ピンポイントで権限を付与しているよう。高度なアクセス許可の項目に対して網羅的に権限を付与できている。

ユーザをUser02(管理者でなく標準ユーザ)に切り替えたのちに、これらのファイルに対して、プロパティの表示やファイルを開く、保存、削除など簡単な操作を行ってみた。上の「一般的なxxx」として権限付与した8ー11のファイル以外はほぼ操作できない。その中でも違いがあるとすれば、アクセス許可の読み取りの有無でセキュリティの権限が表示されなかったり、ファイルの属性が付与できなかったりするくらい。単にフォルダ管理をする程度なら、高度なアクセス許可の項目までは気にしなくていいかも。

このアクセス許可の中でも「アクセス許可の読み取り」は、チェックがないと他の操作ができなくなる。ファイル8の読み取りで、このチェックを外すとファイルを開くことができなくなるし、ファイル1の削除も、削除のチェックだけではアクセス許可のダイアログが出て削除できない。

ちなみに使用したサンプルコードは下記の通り(User01, User02のアカウントがあり、User01でログインして実行している。)

echo off

mkdir .\Folder6\

mkdir .\Folder6\Subfolder6-1\

set n=100
setlocal enabledelayedexpansion 
for /l %%m in (0,1,%n%) do (
    set char=aaa!char!
)
echo %char%
echo sample > ".\Folder6\AAA_sampletext6.txt"
echo %char% > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-01.txt"
echo sample > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-02.txt"
echo %char% > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-03.txt"
echo sample > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-04.txt"
echo %char% > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-05.txt"
echo sample > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-06.txt"
echo %char% > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-07.txt"
echo sample > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-08.txt"
echo %char% > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-09.txt"
echo sample > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-10.txt"
echo %char% > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-11.txt"
echo sample > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-12.txt"
echo %char% > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-13.txt"
echo sample > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-14.txt"
echo %char% > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-15.txt"
echo sample > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-16.txt"
echo %char% > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-17.txt"
echo sample > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-18.txt"
echo %char% > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-19.txt"
echo sample > ".\Folder6\Subfolder6-1\AAA_sampletext6-1-20.txt"

iCACLS Folder6 /inheritance:d /T
iCACLS Folder6 /inheritance:r /T
iCACLS Folder6 /remove Administrators /T
iCACLS Folder6 /remove Users /T
iCACLS Folder6 /remove System /T
iCACLS Folder6 /remove Everyone /T

iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-01.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-02.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-03.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-04.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-05.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-06.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-07.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-08.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-09.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-10.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-11.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-12.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-13.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-14.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-15.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-16.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-17.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-18.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-19.txt /remove user01
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-20.txt /remove user01

iCACLS Folder6 /grant user02:F
iCACLS Folder6\Subfolder6-1 /grant user02:F
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-01.txt /grant user02:(DE)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-02.txt /grant user02:(RC)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-03.txt /grant user02:(WDAC)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-04.txt /grant user02:(WO)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-05.txt /grant user02:(S)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-06.txt /grant user02:(AS)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-07.txt /grant user02:(MA)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-08.txt /grant user02:(GR)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-09.txt /grant user02:(GW)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-10.txt /grant user02:(GE)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-11.txt /grant user02:(GA)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-12.txt /grant user02:(RD)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-13.txt /grant user02:(WD)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-14.txt /grant user02:(AD)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-15.txt /grant user02:(REA)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-16.txt /grant user02:(WEA)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-17.txt /grant user02:(X)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-18.txt /grant user02:(DC)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-19.txt /grant user02:(RA)
iCACLS Folder6\Subfolder6-1\AAA_sampletext6-1-20.txt /grant user02:(WA)

pause