5

ADに新しいドメインユーザーアカウントを作成し、関連する権限を持つファイルサーバーにホームディレクトリを作成するpowershellスクリプトを実行しています。

私の問題は、権限セットを取得できないことです。

以下のコードで、my_fileServer はファイル サーバー名です。sso はシングル サインオン ID を意味し、以下のテスト コードでは「user9999」に設定されています。

どんな助けでも大歓迎です!

Set-Variable homeDir -option Constant -value "\\my_fileServer\Users"
Set-Variable sso -option Constant -value "user9999"

# If the folder for the user does not exist, make a new one and set the correct permissions.
if ( (Test-Path "$homeDir\$sso") -eq $false)
{
    try 
    {
        $NewFolder = New-Item -Path $homeDir -Name $sso -ItemType "Directory"
        $Rights = [System.Security.AccessControl.FileSystemRights]"FullControl,Modify,ReadAndExecute,ListDirectory,Read,Write"
        $InheritanceFlag = [System.Security.AccessControl.InheritanceFlags]::None
        $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None
        $objType =[System.Security.AccessControl.AccessControlType]::Allow
        $objUser = New-Object System.Security.Principal.NTAccount "my_full_domain_name\$sso"
        $objACE = New-Object System.Security.AccessControl.FileSystemAccessRule `
                ($objUser, $Rights, $InheritanceFlag, $PropagationFlag, $objType)
        $ACL = get-acl -Path $NewFolder
        $ACL.AddAccessRule($objACE)
        $objReturn = Set-ACL -Path "$homeDir\$sso" -AclObject $ACL
    $objReturn
    }
    catch
    {
        $msg = $_
        $msg
    }
}

ホームフォルダーは正常に作成されますが、ユーザーのアクセス許可を確認すると、ボックスにチェックマークがありません。 ここに画像の説明を入力

4

4 に答える 4

7

問題はあなたの継承です。サブフォルダーとファイル(彼がフォルダー内に所有するアイテム)で権限を継承することを許可していません。そのため、基本セキュリティ ウィンドウにアクセス許可 (「特別なアクセス許可」のみ) が表示されません。「高度なセキュリティ設定」を開くと、ユーザーがコンテンツではなく、このフォルダーを完全に制御できることがわかります。所有者がアイテムにアクセスできるように、CREATOR OWNER のアクセス許可 (継承付き) を追加する限り、問題ないと思います。ただし、次のように修正できます。

$InheritanceFlag = @([System.Security.AccessControl.InheritanceFlags]::ContainerInherit,[System.Security.AccessControl.InheritanceFlags]::ObjectInherit)

特別な要件がない限り、ユーザーに自分のフォルダーに対する完全なアクセス権 (完全な継承) を与える必要があります。継承が固定された完全なソリューション (Set-ACLパスをクリーンアップし、不要な returnobject を削除しました):

try 
{
    $NewFolder = New-Item -Path $homeDir -Name $sso -ItemType "Directory"
    $Rights = [System.Security.AccessControl.FileSystemRights]"FullControl,Modify,ReadAndExecute,ListDirectory,Read,Write"
    $InheritanceFlag = @([System.Security.AccessControl.InheritanceFlags]::ContainerInherit,[System.Security.AccessControl.InheritanceFlags]::ObjectInherit)
    $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None
    $objType =[System.Security.AccessControl.AccessControlType]::Allow
    $objUser = New-Object System.Security.Principal.NTAccount "my_full_domain_name\$sso"
    $objACE = New-Object System.Security.AccessControl.FileSystemAccessRule `
            ($objUser, $Rights, $InheritanceFlag, $PropagationFlag, $objType)
    $ACL = Get-Acl -Path $NewFolder
    $ACL.AddAccessRule($objACE)
    Set-ACL -Path $NewFolder.FullName -AclObject $ACL
}
于 2013-02-15T12:16:08.487 に答える
2

残念ながら投票できませんが、上記の両方の回答 (Graimer と CB) に同意します。実際の回答は両方の組み合わせです。
- 「高度な」ウィンドウでアクセス許可を確認する必要があります
- コードが「機能」しても、継承がなければ、ユーザーは割り当てられたフォルダーで多くのことを行うことができません。

于 2013-02-15T13:15:04.093 に答える
0

すべての権限が正しく設定されています。'Special Permmissions'クリックしてAdvanced[承認]タブを確認できます。

于 2013-02-15T12:05:26.273 に答える