'PowerShell' Para Definir As Permissões Das Pastas
estou a tentar usar as opções " predefinidas "na aplicação de permissões de pastas; por isso, quero dizer que usando o" controlo completo, Escrita, Leitura, etc " nas 'propriedades' de uma pasta.
o seguinte programa funciona para adicionar o utilizador, mas aplica "permissões especiais" - não as que têm as opções visíveis no menu Propriedades da pasta:
$Acl = Get-Acl "\\R9N2WRN\Share"
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule ("user","FullControl","Allow")
$Acl.SetAccessRule($Ar)
Set-Acl "\\R9N2WRN\Share" $Acl
O que estou a fazer de errado, por favor?
2 answers
Especificar a herança no FileSystemAccessRule()
construtor corrige isto, como demonstrado pelo código modificado abaixo (repare nos dois novos parâmetros do construtor inseridos entre "FullControl"
e "Allow"
).
$Acl = Get-Acl "\\R9N2WRN\Share"
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("user", "FullControl", "ContainerInherit,ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl "\\R9N2WRN\Share" $Acl
De acordo com este tópico
" quando você cria um FileSystemAccessRule como você tem, o A propriedade inerentemente flags não é definida como nenhuma. Na GUI, este corresponde a um ás com a opção Aplicar à opção "Apenas esta pasta", e esse tipo de entrada tem de ser visto através do avançado definicao."
Eu testei a modificação e ela funciona, mas é claro que o crédito é devido ao MVP postar a resposta nesse tópico.
Outro exemplo a usar o 'PowerShell' para definir as permissões (ficheiro / Directório):
Verfiy permissions
Get-Acl "C:\file.txt" | fl *
Aplica as permissões completas para todos
$acl = Get-Acl "C:\file.txt"
$args = "everyone","FullControl","Allow"
$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule $args
$acl.SetAccessRule($accessRule)
$acl | Set-Acl "C:\file.txt"
Espero que isto ajude.