Segurança de compartilhamento de script & configurações de NTFS para AD2003

1

Estaremos implantando salas de aula "dinâmicas" usando o SCCM e, portanto, também precisaremos criar UOs e usuários e homedirs correspondentes. No momento, estou tentando descobrir como editar os direitos de segurança para esses homedirs por meio de um script. Eu tive sucesso limitado usando o google, porque muito parece desatualizado, então eu queria ver o que o ServerFault acha que é o melhor caminho.

O que preciso fazer: - Crie a pasta (não é bem o problema) - Compartilhe e defina permissões para controle total para todos - alterar as configurações do NTFS para "Alterar" ou "Modificar" para um único usuário, recursivamente

As outras partes do script são feitas atualmente no vbscript, mas obviamente posso chamar um script diferente de dentro deste, se necessário. O PowerShell pode ser uma opção (se for possível começar), mas estou ansioso para ouvir outras opções também!

Obrigado

    
por HannesFostie 23.06.2011 / 10:55

3 respostas

1

Aqui está um script do PowerShell que faz o que você deseja.

$Computer = "localhost"
$Class = "Win32_Share"
$Method = "Create"
$name = "foldername$"
$path = "C:\Folderpath"
$description = "This is shared for me to test"
$sd = ([WMIClass] "\$Computer\root\cimv2:Win32_SecurityDescriptor").CreateInstance()
$ACE = ([WMIClass] "\$Computer\root\cimv2:Win32_ACE").CreateInstance()
$Trustee = ([WMIClass] "\$Computer\root\cimv2:Win32_Trustee").CreateInstance()
$Trustee.Name = "EVERYONE"
$Trustee.Domain = $Null
$Trustee.SID = @(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
$ace.AccessMask = 2032127
$ace.AceFlags = 3
$ace.AceType = 0

New-Item -type directory -path $path
$Acl = Get-Acl $path
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("user\domain","Write","Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $path $Acl
$ACE.Trustee = $Trustee
$sd.DACL += $ACE.psObject.baseobject 
$mc = [WmiClass]"\$Computer\ROOT\CIMV2:$Class"
$InParams = $mc.psbase.GetMethodParameters($Method)
$InParams.Access = $sd
$InParams.Description = $description
$InParams.MaximumAllowed = $Null
$InParams.Name = $name
$InParams.Password = $Null
$InParams.Path = $path
$InParams.Type = [uint32]0
$R = $mc.PSBase.InvokeMethod($Method, $InParams, $Null)
switch ($($R.ReturnValue))
 {
  0 {Write-Host "Share:$name Path:$path Result:Success"; break}
  2 {Write-Host "Share:$name Path:$path Result:Access Denied" -foregroundcolor red -backgroundcolor yellow;break}
  8 {Write-Host "Share:$name Path:$path Result:Unknown Failure" -foregroundcolor red -backgroundcolor yellow;break}
  9 {Write-Host "Share:$name Path:$path Result:Invalid Name" -foregroundcolor red -backgroundcolor yellow;break}
  10 {Write-Host "Share:$name Path:$path Result:Invalid Level" -foregroundcolor red -backgroundcolor yellow;break}
  21 {Write-Host "Share:$name Path:$path Result:Invalid Parameter" -foregroundcolor red -backgroundcolor yellow;break}
  22 {Write-Host "Share:$name Path:$path Result:Duplicate Share" -foregroundcolor red -backgroundcolor yellow;break}
  23 {Write-Host "Share:$name Path:$path Result:Reedirected Path" -foregroundcolor red -backgroundcolor yellow;break}
  24 {Write-Host "Share:$name Path:$path Result:Unknown Device or Directory" -foregroundcolor red -backgroundcolor yellow;break}
  25 {Write-Host "Share:$name Path:$path Result:Network Name Not Found" -foregroundcolor red -backgroundcolor yellow;break}
  default {Write-Host "Share:$name Path:$path Result:*** Unknown Error ***" -foregroundcolor red -backgroundcolor yellow;break}
 }

Eu o copiei e o atualizei junto de alguns outros sites, 1 e 2 . Ele funciona na minha máquina com Windows 7. Para obter mais informações sobre o objeto filesystemaccessrule, procure aqui .

    
por 18.08.2011 / 22:57
1

Eu amo o CMD.EXE ... (não realmente):

mkdir x:\directory\to\make
cacls x:\directory\to\make /e /t /g DOMAIN\user:C
net share sharename=X:\directory\to\make

Isso torna o diretório, adiciona "DOMAIN \ user" com permissões "Change" ao diretório (que herdará subpastas e arquivos) e compartilha o diretório. Os dois primeiros comandos podem ser executados em caminhos UNC, se você quiser, mas o net share deve ser executado no servidor em que o diretório compartilhado reside. (Havia uma antiga ferramenta rmtshare.exe em uma das distribuições do Windows NT Resource Kit que tinha aproximadamente a mesma sintaxe de net share , mas podia criar compartilhamentos em computadores remotos.)

    
por 19.08.2011 / 00:50
0

Deve poder usar o comando calcs .

    
por 18.08.2011 / 20:28