takuo_maeda
@takuo_maeda (前田 卓大)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

icacls で収集したアクセスマスクでアクセス制御を書き直したい

解決したいこと

今、収集できたアクセスマスクのデータを
手動で一部改訂して
元の収集したアクセスマスクに復元をしたい

HP ProBook 650G5
プロセッサ  Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz 1.99 GHz
エディション Windows11Pro
バージョン  23H2
OSビルド   22631.4317

発生している問題・エラー

restore(結果).bat
C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder\㩃啜敳獲浜敡慤屴湏䑥楲敶ⴠ舠艣艮艶荠荥荎荭荇莓詗躔覮軯峐梃䲃薃膃鎃枃慜汣潦摬牥䔠敶祲湯㩥伨⥉䌨⥉䘨਩†††††††††††††††††††††††††††††吠䡃坎 ㄲ㄰尲慭摥瑡⠺䥏⠩䥃⠩⥆ †††††††††††††††††††††††††††††癅牥潹敮⠺⥉䌨⥉䐨久⥙䐨⥃ †††††††††††††††††††††††††††††呎䄠呕佈䥒奔卜卙䕔㩍䤨⠩䥏⠩䥃⠩⥆ ††††††††††††††††††††††††† ††††啂䱉䥔屎摁業楮瑳慲潴獲⠺⥉伨⥉䌨⥉䘨਩†††††††††††††††††††††††††††††吠䡃坎ㄲ㄰尲慭摥瑡⠺⥉伨⥉䌨⥉䘨਩䌊尺獕牥屳慭摥瑡作敮牄癩⁥‭掂溂皂悂斃亃涃䞃鎃垃钊꺎킎荜荨荌莅莁莓屧捡晬汯敤屲剅酐趀軬迨辇⺑摰⁦癅牥潹敮⠺䕄奎⠩捒刬ⱄ䑗䄬ⱄ䕒ⱁ䕗ⱁⱘ䅒圬⥁ †††††††††††††††††††††††††††††††††††吠䡃坎ㄲ㄰尲慭摥瑡⠺䕄奎⠩捒刬ⱄ䕒ⱁⱘ䅒਩††††††††††††††††††††††††††††††††††††癅牥潹敮⠺⥉䘨਩††††††††††††††† †††††††††††††††††††††䍔么㉗〱㈱浜敡慤㩴䤨⠩⥆ ††††††††††††††††††††††††††† ††††††††丠⁔啁䡔剏呉屙奓呓䵅⠺⥉䘨਩††††††††††††††††††††††††††††††††††††啂䱉䥔屎摁業楮瑳慲潴獲⠺⥉䘨਩䌊尺獕牥屳慭摥瑡作敮牄癩⁥‭掂溂皂悂斃亃涃䞃鎃垃钊꺎킎荜荨荌莅莁莓屧捡晬汯敤屲潲瑵湩⁥䍔么㉗〱㈱浜敡慤㩴伨⥉䌨⥉䘨਩†††††††††††††††††††††††††††††††††䔠敶祲湯㩥䤨⠩䥏⠩䥃⠩⥆ †††††††††††††††††††††††††††††††††䍔么㉗〱㈱浜敡慤㩴䤨⠩䥏⠩䥃⠩⥆ ††††††††††††††††††††††† ††††††††††癅牥潹敮⠺⥉䌨⥉䐨久⥙䐨⥃ †††††††††††††††††††††††††††††††††呎䄠呕佈䥒奔卜卙䕔㩍䤨⠩䥏⠩䥃⠩⥆ †††††††††††††††††††††††††††††††††啂䱉䥔屎摁業楮瑳慲潴獲⠺⥉伨⥉䌨⥉䘨਩䌊尺獕牥屳慭摥瑡作敮牄癩⁥‭掂溂皂悂斃亃涃䞃鎃垃钊꺎킎荜荨荌莅莁莓屧捡晬汯敤屲潲瑵湩履禁楄䕃突敗襢误荣荁荶莊荁荢荶腦荛蹧迨辇⺑潤硣吠䡃坎ㄲ㄰尲慭摥瑡⠺⥉䘨਩††††††††††††††††††††††††††††††††††††††††††††††††癅牥潹敮⠺⥉䘨਩††††††††††††††††††††††††††††††††††††††††††††††††呎䄠 呕佈䥒奔卜卙䕔㩍䤨⠩⥆ †††††††††††††††††††††††††††††††††††††††††††††††䈠䥕 呌义䅜浤湩獩牴瑡牯㩳䤨⠩⥆ਊ‴슌첂璃䂃䎃讃ꪂ뎐즂袏鶗뎂떂떂붂䊁‰슌첂璃䂃䎃讃袏鶗얂ꮂ릂릂얂떂붂: 指定されたパスが見つか りません。
0 個のファイルが正常に処理されました。1 個のファイルを処理できませんでした
アクセス権データの復元に成功しました。
続行するには何かキーを押してください . . .

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

restore.bat
@echo off
:: 管理者権限で再実行する
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo 管理者権限で再実行しています...
    powershell -Command "Start-Process '%~f0' -Verb RunAs"
    exit /b
)

:: 保存したアクセス権データを復元
icacls "C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder" /restore "C:\Users\maedat\OneDrive - 株式会社\デスクトップ\downloads\a.txt" /C

if %errorLevel% neq 0 (
    echo アクセス権データの復元に失敗しました。
) else (
    echo アクセス権データの復元に成功しました。
)
pause

自分で試したこと

ここに問題・エラーに対して試したことを記載してください。
何回かCopilotで質問

回答

アクセスマスク収集データ

.テキストデータです
aclfolder
D:AI(A;OICI;FA;;;WD)(A;OICI;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)(D;CIID;DT;;;WD)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)(A;OICIID;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)
aclfolder\ERP操作手順書.pdf
D:AI(D;;CCDCLCSWRPWPLOCRRC;;;WD)(D;;CCSWWPLORC;;;S-1-5-21-2584790312-778028843-196222346-1006)(A;ID;FA;;;WD)(A;ID;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)(A;ID;FA;;;SY)(A;ID;FA;;;BA)
aclfolder\routine
D:AI(A;OICI;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)(A;OICIID;FA;;;WD)(A;OICIID;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)(D;CIID;DT;;;WD)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)
aclfolder\routine\【DiCE】Web会議アプリアップデート手順書.docx
D:AI(A;ID;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)(A;ID;FA;;;WD)(A;ID;FA;;;SY)(A;ID;FA;;;BA)
.アクセスマスクデータを利用してアクセス制御を戻すコマンド.bat
@echo off
:: 管理者権限で再実行する
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo 管理者権限で再実行しています...
    powershell -Command "Start-Process '%~f0' -Verb RunAs"
    exit /b
)

:: 保存したアクセス権データを復元
cd "C:\Users\maedat\OneDrive - 株式会社\ドキュメント"
icacls .\ /restore "C:\Users\maedat\OneDrive - 株式会社\デスクトップ\downloads\a.txt" /C

if %errorLevel% neq 0 (
    echo アクセス権データの復元に失敗しました。
) else (
    echo アクセス権データの復元に成功しました。
)
pause
0

1Answer

/restore の為に必要なファイルは Unicode(UTF-16) の必要がありますが、そうなっていますでしょうか?

また、使用しているファイルは /save で作成されたものを使っていますでしょうか?

0Like

Comments

  1. @takuo_maeda

    Questioner

    /restore の為に必要なファイルは Unicode(UTF-16) の必要がありますが、そうなってい>ますでしょうか?

    ありがとうございます。
    ということは先ほど保存形式がS SIJだったのですが、こちらについては再度保存しなおして利用するというひと手間が必要ということでしょうか?

    また、使用しているファイルは /save で作成されたものを使っていますでしょうか?
    はいそうです

  2. @takuo_maeda

    Questioner

    また、使用しているファイルは /save で作成されたものを使っていますでしょうか?

    はい、そうなっています。

  3. まずは使用しているファイルを Unicode(UTF-16) に変換して設定できるかですね。 ファイルパスが文字化けして参照できないだけの様に見受けられるのでそれで問題無いのであればそれで完了です。

    また、使用しているファイルは /save で作成されたものを使っていますでしょうか?

    はい、そうなっています。

    の段階では /save> にして 出力を保存する方法に変更していませんでしたでしょうか……?
    ( なので厳密には /save に含まれない出力結果の 件数とかの出力が含まれていたわけで……
    (その為 ファイルの文字コードが SJIS になっているわけで……。

  4. @takuo_maeda

    Questioner

    すみません。
    質問よろしいですか。
    いったん手動で保存しなおすか、再度、開いてUnicode(UTF-16)に変換するなどの操作が必ずいるとのことなんですね。

    の段階では /save を > にして 出力を保存する方法に変更していませんでしたでしょうか……?

    そのようにしました

    icaclsの情報の収集の方も変更が必要でしょうか?

  5. いったん手動で保存しなおすか、再度、開いてUnicode(UTF-16)に変換するなどの操作が必ずいるとのことなんですね。

    そうです。

    icaclsの情報の収集の方も変更が必要でしょうか?

    動くのであれば不要。
    余計な情報が含まれているのが原因になるか判断つかないので何とも言えないですが。
    無視されて問題無いのであればそのまま使っていいと思います。

  6. @takuo_maeda

    Questioner

    Unicode(UTF-16) に変換して保存して実行しました。

    スクリーンショット 2024-10-24 160153.png

    でした。

  7. それは SJISで開いて Unicode(UTF-16) に変換して保存したのでしょうか?
    Unicode(UTF-16) で開いた際に文字化けしていない状態で見えているのでしょうか?

  8. @takuo_maeda

    Questioner

    スクリーンショット 2024-10-24 161058.png

    こんな形できちんと見えています。

  9. @takuo_maeda

    Questioner

    それは SJISで開いて Unicode(UTF-16) に変換して保存したのでしょうか?

    名前を付けて保存するで文字コードを切り替えて保存しました。

    Unicode(UTF-16) で開いた際に文字化けしていない状態で見えているのでしょうか?

    画像通りなので文字化けはしていません。

  10. 動作確認しました。 多分 SJIS で開いて、名前を付けて保存から 文字コードセット を Unicode(バージョンによっては UTF-16) を選択して保存すればいけるとは思いますが、
    そもそも出力結果に互換性が無いです /save と /save なしで
    (現在が Unicode(UTF-16) か確認する場合は、開く際の文字コードセットの値を Unicode(UTF-16) にして確認してみてください。

    左: /save つき | 右: /save なし
    image.png

    1行目にパス
    2行目に権限 の形式じゃないと無理ですね。

    なので /save で出力したものじゃないと難しいと思われます

  11. @takuo_maeda

    Questioner

    右のものが正規のものかと思っていました。
    わかりました。保存を/saveに変更してやり直します。

  12. @takuo_maeda

    Questioner

    C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder\aclfolder: 指定されたファイルが見つかりません。
    C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder\aclfolder\ERP操作手順書.pdf: 指定されたパスが見つかりません。
    C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder\aclfolder\routine: 指定されたパスが見つかりません。
    C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder\aclfolder\routine\【DiCE】Web会議アプリアップデート手順書.docx: 指定されたパスが見つかりません。
    0 個のファイルが正常に処理されました。4 個のファイルを処理できませんでした
    アクセス権データの復元に成功しました。
    続行するには何かキーを押してください . . .
    

    確かにエラーメッセージはかわりませした。
    ありがとうございます。
    でも確かにそこにあるフォルダを認識してくれません。

    スクリーンショット 2024-10-24 163649.png

  13. ファイルに設定されているパスを元にフォルダに移動してください(カレントディレクトリがそこになる様に カレントディレクトリを切り替えてください。
    前の /save された際のファイルを見た感じだと下記の様な感じでしょうか?

    cd "C:\Users\maedat\OneDrive - 株式会社\ドキュメント"
    
  14. @takuo_maeda

    Questioner

    当たり前のことを聞いてすみません。
    icaclsで後ろにパス指定しているのですが、この指定は何のための指定になるでしょうか?あたりまえの質問でみません。

  15. 対象となるファイル/フォルダです。ただ、 /save で出力されたパスはそこのフォルダをカレントディレクトリとして扱って出力するので注意が必要です。

    なのでこの /restore の場合は ..\ (現在のカレントディレクトリ)を指定するのが正しいと思われます。

  16. @takuo_maeda

    Questioner

    そういうことなんですね。確かに出力さきがカレントティレクトリになれば、テスクトップになるので、チェンジディレクトリーが必要ですね。
    ありがとうございます。

  17. @takuo_maeda

    Questioner

    @echo off
    :: 管理者権限で再実行する
    net session >nul 2>&1
    if %errorLevel% neq 0 (
        echo 管理者権限で再実行しています...
        powershell -Command "Start-Process '%~f0' -Verb RunAs"
        exit /b
    )
    cd "C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder"
    
    :: 保存したアクセス権データを復元
    icacls "C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder" /restore "C:\Users\maedat\OneDrive - 株式会社\デスクトップ\downloads\a.txt" /C
    
    if %errorLevel% neq 0 (
        echo アクセス権データの復元に失敗しました。
    ) else (
        echo アクセス権データの復元に成功しました。
    )
    pause
    

    入れてはみましたが、

    結果.bat
    C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder\aclfolder: 指定されたファイルが見つかりません。
    C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder\aclfolder\ERP操作手順書.pdf: 指定されたパスが見つかりません。
    C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder\aclfolder\routine: 指定されたパスが見つかりません。
    C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder\aclfolder\routine\【DiCE】Web会議アプリアップデート手順書.docx: 指定されたパスが見つかりません。
    0 個のファイルが正常に処理されました。4 個のファイルを処理できませんでした
    アクセス権データの復元に成功しました。
    続行するには何かキーを押してください . . .
    

    エラーメッセージは変わりませんでした

  18. @takuo_maeda

    Questioner

    どうしてでしょう??

  19. cd "C:\Users\maedat\OneDrive - 株式会社\ドキュメント"
    icacls .\ /restore "C:\Users\maedat\OneDrive - 株式会社\デスクトップ\downloads\a.txt" /C
    

    ではだめなのでしょうか?

    /save に設定されているパスはどこをカレントディレクトリとしたパスになっていますでしょうか?

    そういう意味では

    icacls "C:\Users\maedat\OneDrive - 株式会社\ドキュメント" /restore "C:\Users\maedat\OneDrive - 株式会社\デスクトップ\downloads\a.txt" /C
    

    これで動く……?

  20. @takuo_maeda

    Questioner

    cd "C:\Users\maedat\OneDrive - 株式会社\ドキュメント"
    icacls .\ /restore "C:\Users\maedat\OneDrive - 株式会社\デスクトップ\downloads\a.txt" /C
    

    上で

    処理ファイル: .\aclfolder
    処理ファイル: .\aclfolder\ERP操作手順書.pdf
    処理ファイル: .\aclfolder\routine
    処理ファイル: .\aclfolder\routine\【DiCE】Web会議アプリアップデート手順書.docx
    4 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした
    アクセス権データの復元に成功しました。
    続行するには何かキーを押してください . . .
    

    できました。うまくいきました。
    ありがとうございます。

    これはアクセス権の含まれる対象ファイルの上の階層を指定して
    テキストにaclfolderとあるのでそのフォルダを探しに行くという流れになっているんでしょうか?

  21. そんな感じです。
    /save の時の指定が C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder になっていた為、カレントディレクトリが C:\Users\maedat\OneDrive - 株式会社\ドキュメント というだけではありますが……

    もしもカレントを C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder にしたかった場合は /save の際の第一引数を C:\Users\maedat\OneDrive - 株式会社\ドキュメント\aclfolder\* にする必要がある。こうすると aclfolder フォルダ直下のファイルの意味になるので カレントは aclfolder となる。

  22. @takuo_maeda

    Questioner

    カレントディレクトリが今どこかとカレントディレクトリをどこに指定するのかということですね。わからない自分を最後まで教えていただきありがとうございます。とても助かりました。本当にありがとうございます。

  23. これらを踏まえた最終のバッチファイルを回答として投稿していただけると後の人にも有用なので宜しくお願いします。

  24. @takuo_maeda

    Questioner

    はい、そうします。

    acl.bat
    @echo off
    :: 管理者権限で再実行する
    net session >nul 2>&1
    if %errorLevel% neq 0 (
        echo 管理者権限で再実行しています...
        powershell -Command "Start-Process '%~f0' -Verb RunAs"
        exit /b
    )
    
    :: 保存したアクセス権データを復元
    cd "C:\Users\maedat\OneDrive - 株式会社\ドキュメント"
    icacls .\ /restore "C:\Users\maedat\OneDrive - 株式会社\デスクトップ\downloads\a.txt" /C
    
    
    if %errorLevel% neq 0 (
        echo アクセス権データの復元に失敗しました。
    ) else (
        echo アクセス権データの復元に成功しました。
    )
    pause
    

    もとになった(=前もって収集した)のアクセスマスクデータ

    .txt
    aclfolder
    D:AI(A;OICI;FA;;;WD)(A;OICI;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)(D;CIID;DT;;;WD)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)(A;OICIID;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)
    aclfolder\ERP操作手順書.pdf
    D:AI(D;;CCDCLCSWRPWPLOCRRC;;;WD)(D;;CCSWWPLORC;;;S-1-5-21-2584790312-778028843-196222346-1006)(A;ID;FA;;;WD)(A;ID;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)(A;ID;FA;;;SY)(A;ID;FA;;;BA)
    aclfolder\routine
    D:AI(A;OICI;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)(A;OICIID;FA;;;WD)(A;OICIID;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)(D;CIID;DT;;;WD)(A;OICIID;FA;;;SY)(A;OICIID;FA;;;BA)
    aclfolder\routine\【DiCE】Web会議アプリアップデート手順書.docx
    D:AI(A;ID;FA;;;S-1-5-21-2584790312-778028843-196222346-1006)(A;ID;FA;;;WD)(A;ID;FA;;;SY)(A;ID;FA;;;BA)
    
  25. @takuo_maeda

    Questioner

    最後まできちんとアドバイスありがとうございます。

  26. いえ、それをコメントではなく、回答として投稿していただけると、あとの人が(わざわざ回答のコメントを開いて読み込まなくても)見ることができる様にした方がよい というニュアンスです。

  27. @takuo_maeda

    Questioner

    そういたしました。

Your answer might help someone💌