设置共享基于安全权限的共享*享所有文件夹的权限
因此,这可能有点复杂....我创建了一个脚本,它生成所有在共享上拥有安全权限的人员列表。问题是共享的共享权限与安全权限不同。我想删除所有共享权限并将共享权限设置为与安全权限相同的完全控制权限的人员。设置共享基于安全权限的共享*享所有文件夹的权限
我需要在四台不同的服务器上运行这个服务器,所以我需要一个脚本来改变它。任何想法或资源?
编辑:跟同事讨论后客观上略有改变。现在我想使用Set-Acl
基本上删除所有用户的完全控制,除了一个特定的组。这不应该太难了吗?我只是简单地为每个用户分配一个 - 对于每个用户 - 如果用户不在特定组中,则设置acl以删除完全控制。
如何删除权限?我看到设置FC的命令,但不能删除。
根据您的回复,这种方式可以删除GET-ACL和SET-ACL中的所有错误,因此可以在早期版本的PowerShell中使用。一旦它被删除,你可以改变这个(参考$ PERM)来添加你想保留访问的组。让我知道你是否需要调整。
$folderpath = "Somefolderpath"
write-Output "Removing inheritance "
$acl = Get-Acl $Folderpath
$acl.SetAccessRuleProtection($True, $True)
$acl | Set-Acl
$acl = Get-Acl $Folderpath
$acl.Access |where {$_.IdentityReference -eq "NT AUTHORITY\Authenticated
Users"} |%{$acl.RemoveAccessRule($_)}
$acl | Set-Acl
If ($?){
Write-Output "Inheritance Removed"
}
write-Output "Set permissions"
$acl = Get-Acl $Folderpath
$perm = "AddGroupHere","FullControl","Allow"
$accessRule = new-object System.Security.AccessControl.FileSystemAccessRule
$perm
$acl.AddAccessRule($accessRule)
$acl | Set-Acl
If ($?){
Write-Output "ACL set"
}
对不起,我从来没有写过PS。如果我想对共享内的每个文件夹执行此操作,我会如何将它包装在一个foreach中? – SanomaJean
[列出CmdletBinding()] 参数( ''[参数(ValueFromPipeline = $ True时, ValueFromPipelineByPropertyName = $真)] $计算机=) 股,每股$ = gwmi -Class win32_share -ComputerName $计算机|选择-ExpandProperty名称 的foreach($份额$股){ \t尝试{ \t \t $为share1 = “服务器路径” + $共享 \t如果(测试的路径$为share1) \t#写主机$ share1 \t { \t write-output $ share get-acl $ share1 | %{$ _。访问} | FT -property的IdentityReference,AccessControlType,FileSystemRights } 其他 { 掷$共享 }} 抓 { 写输出 “string此处的” } – SanomaJean
对不起,缺乏这formatting-就是我目前用于收集每个共享上所有登录名的名称。为了安全起见,我删除了SERVERPATH和STRING HERE。 – SanomaJean
将共享权限设置为'Everyone:FullControl'并使用文件系统权限执行访问控制。无论如何它们允许更细粒度的控制。如果有的话,在共享上启用基于访问的枚举,以便人们只能看到他们实际有权访问的文件/文件夹。 –
在较新版本的PowerShell中仍然存在get-acl和set-acl的一些主要错误,但这是可能的。我会尽力在今晚晚些时候回复! –
嗨@RichardDakin在与我的同事们讨论后,目标略有改变。现在我想使用set-acl从基本上删除所有用户的完全控制,除了一个特定的组。这不应该太难了吗?我只是简单地为每个用户分配一个 - 对于每个用户 - 如果用户不在特定组中,则设置acl以删除完全控制....如何删除权限?我看到设置FC的命令,但不能删除。 – SanomaJean