Windows 10 April 2018 Update の影響で,ちょっとした事情により \windows\system32
以下のファイルを一部前のバージョンに戻す必要があって(ファイルは事前に copy していた),access control list (ACL) も含めて戻したかったので,ACL および icacls 関連メモ(必要最小限).
-
owner を Administrators group に:
takeown /a /f file
See 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
を知らず少し嵌った.