Работая над небольшим скриптом резервного копирования, я пытаюсь изменить ACL файла с помощью Set-Acl в Powershell 1 в Vista и всегда получаю следующее сообщение об ошибке:
Set-Acl : The security identifier is not allowed to be the owner of this object.
Эта ошибка сохраняется, даже если я использую минимальный сценарий:
$acl = Get-Acl $sourcepath$file
$acl |format-list
Set-Acl -path $sourcepath$file -AclObject $acl
Кто-нибудь знает причину этой ошибки? Очевидно, я не меняю владельца файла ...
BTW: в конечном итоге я хочу уменьшить все права доступа к ReadAndExecute. Может быть, есть более простой способ сделать это в Powershell?
Спасибо за вашу помощь! Ульрих
Проверь это POWERSHELL - РЕДАКТИРОВАНИЕ РАЗРЕШЕНИЙ ДЛЯ ФАЙЛА ИЛИ ПАПКИ
Из комментария к публикации:
Вы, очевидно, получаете эту ошибку, потому что пытаетесь изменить владельца объекта. По умолчанию NTFS позволяет вам установить только владельца объекта:
A: себя
B: Группа администраторов
Вот и все.
Однако, если вы администратор или оператор резервного копирования, вы можете установить его для любого пользователя, НО эта привилегия отключена по умолчанию и должна быть включена, прежде чем вы сможете это сделать. Если вам интересно - это осознанное ограничение безопасности.
Не существует конкретных способов включения этого .NET или PowerShell, но если мы покинем территорию Microsoft и посетим проект PowerShell Community Extensions, мы найдем способ ...
Я не так часто использовал PSCX, и это не продукт Microsoft, поэтому любые вопросы по ним следует направлять www.codeplex.com/PowerShellCX а не здесь, но здесь:
Загрузите и установите PSCX из www.codeplex.com/PowerShellCX
Настройте класс-оболочку для TokenPriviliege, используя следующий синтаксис:
$oTP = New-Object PSCX.Interop.TokenPriviliege
Теперь предоставьте его текущему процессу:
Set-Privilege $oTP
Теперь у вас должна быть возможность изменить владельца папки на любого пользователя.
Интересная ошибка, какой файл / путь вы используете? Это системный путь, запускали ли вы PowerShell от имени администратора (UAC)?
Ваш пример сценария обновит владельца файла, поскольку он является частью $ acl.