Windows 10 April 2018 Update の影響で,ちょっとした事情により \windows\system32 以下のファイルを一部前のバージョンに戻す必要があって(ファイルは事前に copy していた),access control list (ACL) も含めて戻したかったので,ACL および icacls 関連メモ(必要最小限).
-
owner を Administrators group に:
takeown /a /f fileSee takeown.
-
owner 確認:
get-acl fileコマンドプロンプト(
cmd)のdir file /qでも可,powershell のdirはget-childitemなので,通常のdirと挙動が異なる. -
ACL確認:
icacls fileフラグの意味とかは https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/icacls 参照.
F: full accessRX: read and executeI: inheritance (属性の継承)
See icacls.
-
継承の無効化:
icacls file /inheritance:d -
owner 変更:
icacls file /setowner "NT SERVICE\TrustedInstaller" -
ACL 属性変更: 以下のとおり.
/grant:rのように:rを付けるとまるごと変更される(以下では F → RX).付けない場合は grant を追加.icacls file /grant "BUILDIN\Administrators:F"icacls file /grant:r "BUILDIN\Administrators:RX"
結局やりたかったのは owner を TrustedInstaller にしつつ Administrators に RX 権限付与(を Administrator で)なのだが,一旦 owner を Administrators にしてしまって,BUILDIN\Administrators:F の状態で owner を TrustedInstaller にしたり,他の ACL を付与したりして,最後に icacls file /grant:r "BUILDIN\Administrators:RX" すれば良いらしい./grant:r を知らず少し嵌った.