Запустите команду как системный пользователь в Powershell

Я нашел несколько ответов в Интернете, но не совсем то, что искал.

Проблема заключается в следующем: при восстановлении файла с помощью "Networker" списки ACL файла те же, что и при резервном копировании файла, относящиеся к наследованию в папке, в которую восстанавливается файл. Значение наследования ACL не влияет на вновь восстановленный файл.

Это оставляет меня с проблемой, что только 3 учетных записи имеют право изменять ACL.

  • Пользователь, которому принадлежит файл
  • Администраторы домена
  • Системный аккаунт

Чтобы решить эту проблему, я хотел бы запустить автоматический скрипт, исправляющий ACL и активирующий правильное наследование.

Системный пользователь для скрипта должен быть одним из трех. Пользователь изменяется и поэтому не является правильным выбором, также я не хочу оставлять какие-либо учетные данные администратора домена или предоставлять права администратора домена учетной записи службы.

Это оставляет мне системную учетную запись для выполнения работы, и здесь возникает вопрос:

Как выполнить задачу в powershell под учетными данными системной учетной записи?

Я старался

$username = "NT Authority\System"
$password = ConvertTo-SecureString -String "" -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist @($username, $password)

Поскольку пароль пустой, я не могу создать учетные данные с его помощью.

Имя учетной записи во всех локалях -.\LocalSystem. Имя, LocalSystem или ComputerName\LocalSystem также могут быть использованы. Эта учетная запись не имеет пароля. https://msdn.microsoft.com/de-de/library/windows/desktop/ms684190(v=vs.85).aspx

Так что теперь я немного смущен тем, как я могу заставить это работать.

Изменить: Файловая система работает на EMC и не является настоящей файловой системой Windows, а просто подключена к системе Linux. Так что нет учетной записи локального администратора.

TL; DR

Я хочу наследовать разрешения ACL для файлов, используя системную учетную запись PowerShell, как?

2 ответа

https://github.com/mkellerman/Invoke-CommandAs

Сделал функцию Invoke-Command для локального / удаленного компьютера с использованием предоставленных учетных данных или SYSTEM. Возвращает PSObjects, обрабатывает сетевые прерывания и решает любые проблемы Double-Hop.

Попробуйте, дайте мне знать, если это решит ваши проблемы.

Если у вас все в порядке с установкой (очень полезной) сторонней программы, вы можете попробовать следующее. Это портативный.zip, никакой реальной установки.

Запустить от имени администратора:

C:\WINDOWS\system32>nircmd.exe elevatecmd runassystem c:\windows\System32\cmd.exe

запускает новое окно cmd:

Microsoft Windows [Version 10.0.18362.418]

(c) 2019 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>whoami
nt authority\system

C:\WINDOWS\system32>

https://www.nirsoft.net/utils/nircmd.html

Администраторы домена получают доступ через локальную группу администраторов. Локальные администраторы могут стать владельцами любого локального объекта и впоследствии предоставить новые разрешения этому объекту.

Запуск чего-то вроде этого от имени администратора должен делать то, что вы хотите:

takeown /f C:\some\file_or_folder /a /r /d:y
icacls C:\some\file_or_folder /reset /t /c /q

Никогда не используйте учетную запись SYSTEM для таких вещей.

Другие вопросы по тегам