0

これは一種の興味深い問題なので、ここで我慢してください。

ファイルをエンドユーザー デバイスに同期するために使用する 3 つのレベルのネストされたフォルダーがあります。最初のレベルでは管理者がアクセス許可を持ち、2 番目のレベルではエンド ユーザーが (明示的かつ個別の) アクセス許可を持ち、3 番目のレベルではコンテンツがあります。 (ファイルと通常は複数のフォルダー)。

この問題は、(時折) 第 3 レベルに移動されるコンテンツがその上のフォルダーからアクセス許可を継承しない場合に発生します。データ)。

これを解決するために、第 3 レベルのフォルダーを掘り下げ、そこにある ACL の継承フラグをリセットするバッチ スクリプト (毎日のスケジュールで実行する) を作成しようとしています。このスクリプトは、第 2 レベルのフォルダーのアクセス許可に触れないことが重要です (エンド ユーザーの明示的な権限が削除されるため)。

これが私が使用しているスクリプトです(はい、非常に単純です):

SET base=C:\testPrivate
SET subfolders=.\*

FOR /r %base% %%a in (.) do 
        (
        icacls.exe %subfolders% /reset /t
        )
exit /b

現在作成しようとしているスクリプトの問題は、作業中のディレクトリの下にあるすべてのもの (第 2 レベルを含む) のアクセス許可をリセットすることです。

icacls が第 3 レベルのフォルダーでのみ処理されるように、/r フラグの作業ディレクトリを取得して %subfolders% にフィードする、使用できるフラグまたは変数はありますか?

4

3 に答える 3

0

私と一緒にこれを調べてくれてありがとう - 私は自分のスクリプトをわずかな変更で動作させることができました:

SET base=C:\testPrivate
SET CurrentDate=%date:~-4,4%%date:~-7,2%%date:~-10,2%
SET CurrentTIme=%time:~-11,2%%time:~-8,2%%time:~-5,2%

FOR /d %%a in (%base%\*) do (icacls.exe %%a\* /t /reset >> %base%\InheritanceReset-%currentdate%.%currenttime%.txt)
exit /b

このバッチ スクリプトは、親 (第 2 レベル) またはルート (第 1 レベル) フォルダーを変更することなく、第 3 レベルの各ディレクトリを適切に調査し、その中のすべてのオブジェクトの継承をリセットします。また、そのアクションを日付/時刻スタンプ付きのログ ファイルに出力します。

これが他の誰かの役に立つことを願っています。

于 2013-05-09T17:11:01.563 に答える
0

Endoro のコードに基づいています (エコーを削除してコマンドを有効にします) - ただし、第 3 レベルのフォルダーで動作します。ファイル自体に権限を設定するのではなく、権限を設定するときにそれで十分ですか? その後、フォルダーからアクセス許可を継承しますか?

@echo off &setlocal
pushd "c:\testPrivate"
for /f "delims=" %%i in ('dir /ad /b /s ^| findstr \\.*\\.*\\ ^| findstr /v \\.*\\.*\\.*\\') do echo icacls.exe "%%~fi" /reset /t
popd
pause

そうでない場合、これは第 3 レベルのファイルで機能します。

@echo off &setlocal
pushd "c:\testPrivate"
for /f "delims=" %%i in ('dir /a-d /b /s ^| findstr \\.*\\.*\\.*\\ ^| findstr /v \\.*\\.*\\.*\\.*\\') do echo icacls.exe "%%~fi" /reset /t
popd
pause
于 2013-05-09T10:36:40.617 に答える