2008 r2 主目录的权限

2008 r2 主目录的权限

我有一台 Windows 2008 R2 文件服务器。它的设置是让用户将主驱动器映射到 H:。它位于以下位置\\servername\home\%username%

我一直遇到一个问题,Mac 用户无法看到其他用户的主驱动器(即使启用了枚举)。

我需要更改目录和所有用户子目录的权限。有没有简单的方法可以批量执行此操作(超过一千个)。

我看过 Set-Aclhttp://helgeklein.com/setacl/examples/managing-file-system-permissions-with-setacl-exe/但是我不知道它如何处理所有已存在的用户主驱动器。如果有人知道一个好的工具那就太好了。

我想要将以下权限应用于 %username% 文件夹

SYSTEM - Full control
local\Users special list and read attributes
local\administrators - Full control
%username% = modify

谢谢

答案1

或者如果你更喜欢 PowerShell,我的一位技术人员编写了这个,它对我们来说效果很好。我相信它可以清理一些,但我留下了一些测试行,以便更容易使用和自定义。这使用任务工具你不再需要它,特别是如果你使用 PowerShell v2 和子ACL

cls
#Add-PSSnapin quest*
#$dirlist = gci -name c:\test -Exclude *.* | sort #my original


$dirlist = gci \\servername\sharename -Exclude *.* | ? { $_.PSIsContainer }

$subinacl = "C:\utils\subinacl.exe"
foreach ($userdir in $dirlist)
        {
            $username = $userdir.name
            $adaccount = Get-QADUser $username
            #Verifies user is an active employee, renamed folder to be deleted if not
            If (($adaccount.AccountIsDisabled -eq $TRUE) -or (!$adaccount))
                {
                    write-host "$username is not a current employee"
                    #takeownership
                    #takeown /f $userdir /R /D Y /A
                    #rename folder to _DEL_originalname
                    $newname = "_DEL_$username"
                    rename-item -path $userdir -newname $newname
                }
            Else
                {
                #get full path            
                Write-Host $userdir.name
                #$currentDir = "c:\test\$userdir" #my original
                $currentDir = $userdir.FullName # this way you don't dupe the start folder
                #takeown /f $userdir /R /D Y /A

                #get ACL of folder
                $acl = Get-Acl $currentDir

                #variable to set new permissions for username of folder           
                #$permission = "domainname\$userdir",”FullControl”,”ContainerInherit,ObjectInherit”,”None”,”Allow” #original
                $permission = "[email protected]",”FullControl”,”ContainerInherit,ObjectInherit”,”None”,”Allow”

                $accessRule = new-object System.Security.AccessControl.FileSystemAccessRule $permission

                #actually set the permissions
                $acl.SetAccessRule($accessRule)
                #$acl | Set-Acl $currentDir #my original
                Set-Acl $currentDir $acl

                #use subinacl to set owner at parent level and below
                $params1 = "/file $currentDir /setowner=domainname\$username"
                $params2 = "/subdirectories $currentDir\*.* /setowner=domainname\$username"
                $params3 = "/subdirectories $currentDir\* /grant=domainname\$username"
                $params4 = "/subdirectories $currentDir\* /grant=domainname\administrators=F"
                Invoke-Expression "$subinacl $params1" | out-null
                Invoke-Expression "$subinacl $params2" | out-null
                Invoke-Expression "$subinacl $params3" | out-null
               # Invoke-Expression "$subinacl $params4" | out-null
                }
        }

答案2

这个脚本是我在 win 2008 上使用过的,用于重置名为 e:\users 的目录上的用户安全性。它将所有权重置为正确的所有者并设置标准安全配置文件。它使用 2008 附带的内置 takeown 和 icacls,因此不需要外部工具。

它假定用户名和目录名相同。例如,e:\users\j.doe 由 mydomain\j.doe 拥有

如果您向其传递 j.doe 之类的参数,它只会“更正”该目录,因此您可以在一个目录上进行测试。在实际使用之前,请检查安全权限是否符合您的要求。在迁移之后,我使用它来更正我在脚本中复制文件的问题。

@echo off
setlocal enabledelayedexpansion
set mydom=mydomainname
set domadmins=%mydom%\Domain Admins
set domadmin=%mydom%\administrator


for /d %%A in (e:\users\%1*) do (
        echo %%~nA%%~xA         %%A

        echo.
        echo takeown
        takeown /f %%A /r /d y

        echo.
        echo reset security
        icacls %%A\*.* /reset /t

        echo.
        echo reset user access
        icacls %%A\*.* /grant:r "%mydom%\%%~nA%%~xA:(oi)(ci)F"

        echo.
        echo Add domainadmins
        icacls %%A\*.* /grant:r "%domadmins%:(oi)(ci)f" /grant:r "%mydom%\%%~nA%%~xA:(oi)(ci)F" /grant:r "%domadmin%:(oi)(ci)f" /grant:r "SYSTEM:(OI)(CI)F" /t /c

        rem echo.
        rem echo add user full access
        rem icacls %%A /grant:r "%mydom%\%%~nA%%~xA:(oi)(ci)F" /t /c
        icacls %%A\*.* /inheiritance:r

        echo.
        echo reset user ownership
        @echo on
        icacls %%A\*.* /setowner %mydom%\%%~nA%%~xA /t /c
        @echo off)

echo finished

我在发布时做了一些小改动,因此可能存在语法错误。

相关内容