Используя учетную запись администратора в Windows Server 2019, я пытаюсь изменить разрешения NTFS для учетной записи пользователя на %ProgramFiles%
, %ProgramFiles(x86)%
, и %WinDir%
, но получаю сообщение об access denied
ошибке, поскольку владельцами папок являются TrustedInstaller
.
- Я пробовал как базовый, так и расширенный диалог разрешений, и если я использую расширенный диалог для изменения разрешений
C:
, он не работает в этих трех папках при распространении изменений на подэлементы. - Я предполагаю, что можно будет изменить владельца папок, но я также предполагаю, что это будет не очень хорошей идеей.
Почему это происходит и есть ли способ этого избежать?
- Я пытаюсь изолировать учетную запись пользователя, запретив выполнение всем приложениям, за исключением двух, которые будут использоваться с одной автоматизированной целью — одно из них находится в подпапке
%ProgramFiles%
, а другое — на отдельном диске.
решение1
Это происходит из-за того, что папкатекущийACL не предоставляет учетным записям администраторов разрешение на установку ACL. Если вы не являетесь владельцем, то вы не можете изменять ACL, если только вам явно не предоставлен такой доступ – это касается и администраторов.
(Запись доступа, которая предоставит полный доступ, отмечена (IO)
как «Только наследовать»; она действует только на дочерние объекты, но не на исходную папку.)
Один из способов обойти это — активировать SeRestorePrivilege (например, с помощью командлетов PSPrivilege) — то, что использует Explorer для установки произвольных владельцев — но это не сработает, icacls
поскольку он вручную снова отключает привилегию перед внесением изменений. Хотя это может сработать и с другим инструментом (возможно, с собственным PowerShell Set-Acl
).
Другой метод — использование подобного инструмента, gsudo --ti
который позволяет запускать произвольные команды с правами TrustedInstaller (во многом так же, как компоненты Windows получают эти права).