Como configuro permissões para um compartilhamento de cluster usando o Powershell em 2008?

2

Eu tenho um recurso de cluster do tipo "compartilhamento de arquivo", mas quando tento configurar o parâmetro "security", recebo o seguinte erro (trecho):

Set-ClusterParameter : Parameter 'security' does not exist on the cluster object

Usando o cluster.exe, recebo um resultado melhor, ou seja, o nada usual quando o comando funciona. Mas quando eu faço check-in no Gerenciador de Cluster de Failover, as permissões não foram alteradas. No Server 2003, o método cluster.exe funcionou.

Alguma idéia?

Atualização:

Todo o comando e erro.

PS C:\> $resource=get-clusterresource testshare
PS C:\> $resource

Name                          State                         Group                         ResourceType
----                          -----                         -----                         ------------
testshare                     Offline                       Test                          File Share


PS C:\> $resource|set-clusterparameter security "domain\account,grant,f"
Set-ClusterParameter : Parameter 'security' does not exist on the cluster object 'testshare'. If you are trying to upda
te an existing parameter, please make sure the parameter name is specified correctly. You can check for the current par
ameters by passing the .NET object received from the appropriate Get-Cluster* cmdlet to "| Get-ClusterParameter". If yo
u are trying to update a common property on the cluster object, you should set the property directly on the .NET object
 received by the appropriate Get-Cluster* cmdlet. You can check for the current common properties by passing the .NET o
bject received from the appropriate Get-Cluster* cmdlet to "| fl *". If you are trying to create a new unknown paramete
r, please use -Create with this Set-ClusterParameter cmdlet.
At line:1 char:31
+ $resource|set-clusterparameter <<<<  security "domain\account,grant,f"
    + CategoryInfo          : NotSpecified: (:) [Set-ClusterParameter], ClusterCmdletException
    + FullyQualifiedErrorId : Set-ClusterParameter,Microsoft.FailoverClusters.PowerShell.SetClusterParameterCommand
    
por Andrew J. Brehm 06.08.2012 / 16:07

1 resposta

1

Encontrei uma resposta óbvia e fácil de usar. É tão simples que pode não acreditar que seja uma solução da Microsoft.

$ permissions é uma matriz de permissões contendo uma conta (domain \ user), uma permissão (fullcontrol) e um tipo (allow).

# create access rule based on permissions
$rule = new-object system.security.accesscontrol.filesystemaccessrule $permissions

# get an acl, remove access rules, add our rule
$acl = get-acl "c:\" # need to get acl from root of drive to avoid inheritance
$acl.access | foreach-object {$acl.removeaccessrule($_)}
$acl.setaccessrule($rule)

# get security descriptor from acl and convert to binary security descriptor
$sddl = $acl.sddl
$sdhelper = [wmiclass]"win32_securitydescriptorhelper"
$binarysd = ($sdhelper.sddltobinarysd($sddl)).binarysd

# get cluster resources from registry
$resources = get-childitem "hklm:\cluster\resources"

# ...with paths that powershell will understand
$resources = $resources | foreach-object {$_.pspath}

# find clustershare resource path
$resource = $resources | where-object {(get-itemproperty $_ name).name -eq $clustershare}

# derive path to resource parameters
$parameters = "$resource\parameters"

# configure security descriptor
set-itemproperty $parameters "security descriptor" $binarysd

É realmente assim tão simples.

O único problema é que isso funciona apenas para um nó e deve ser repetido em cada nó. Ele sobrevive a failovers (e as permissões definidas em um nó reaparecerão quando o compartilhamento falhar novamente no nó). Além disso, só funciona para "fullcontrol", não para "ler" ou outras permissões. Não sei porque.

Eu não aceito isso como uma resposta porque realmente não é. Mas parece ser o mais próximo de uma solução para este problema com o Windows Server 2003 simplesmente não existia (cluster.exe poderia definir permissões de compartilhamento) e que a Microsoft não parece resolver em qualquer lugar.

    
por 04.09.2012 / 09:49