Eu tenho uma típica "Conta desconhecida" em muitos arquivos de instalações antigas/outras do Windows e há muitas respostas típicas em todos os lugares.
No entanto, não estou procurando uma solução típica , takeown
ou GUI. Gostaria de alterar esses SIDs desconhecidos para SID locais conhecidos, mas manter os tipos de permissão e a herança.subinacl
xcacls
Até agora, a única coisa próxima do que estou procurando é o script do PowerShell:http://poshcode.org/2081que permite excluir SIDs desconhecidos em compartilhamentos de rede. Ele contém lógica básica para encontrar SIDs desconhecidos, mas ainda não encontrei uma maneira de substituir o SID no FileSystemAccessRule
objeto, mas não sou tão fluente em PowerShell ou .NET.
Se eu não estiver errado,Este artigono MS TechNet está sugerindo a construção FileSystemAccessRule
e isso pode ser realizado.
Alguém sabe se existe uma solução melhor para isso? Talvez exista um aplicativo, ferramenta de linha de comando ou cmdlet para este trabalho?
Responder1
No Powershell usando Get-Acl
e Set-Acl
você pode modificar a ACL manipulando a string SDDL.
Primeiro obtenha o objeto ACL.
$acl = Get-Acl -Path C:\YourFile.txt
Agora pegue a string SDDL:
$sddl = $acl.sddl
Agora você pode substituir o SID na string pelo que desejar. Isso usa uma expressão regular para atualizar correspondências parciais.
$sddl2 = $sddl -replace "S-1-5-21-[0-9-]+", "ExistingSIDHere"
Em seguida, atualize o objeto ACL:
$acl.SetSecurityDescriptorSddlForm($sddl2)
Em seguida, defina a ACL do objeto:
Set-Acl -AclObject $acl -Path C:\YourFile.txt