尝试使用powershell重置从Linux机器复制的文件/文件夹的权限。
结构看起来类似于
E:\Parent Folder - No inheritance - Group based permissions
|
|
Folder01 - No inheritance
|
|
Subfolders and file - Group based permissions, inheritance
Folder02 - No inheritance
|
|
Subfolders and file - Group based permissions, inheritance
Folder03 - No inheritance
|
|
Subfolders and file - Group based permissions, inheritance
Folder04 - No inheritance
|
|
User Folder - User based permissions, No Inheritance
|
|
Inheritance脚本当前首先运行外接命令,然后是icacls。然后循环遍历第一级文件夹,以禁用继承。然后将权限应用于文件夹。
这是我所拥有的一个样本。它只对我想设置的每个特定权限重复自己。
Get-ChildItem -Path "$solidPath" -ErrorAction SilentlyContinue | ForEach-Object {
$Item = $_.FullName
If ( "$Item" -eq "E:\ParentFolder\Folder04" -or "$Item" -eq "E:\ParentFolder\Folder03" )
{
Write-Host "Do Not Touch" -ForegroundColor DarkRed
}
Else
{
$colRightsAdmin = [System.Security.AccessControl.FileSystemRights]"FullControl"
$InheritanceFlagAdmin = [System.Security.AccessControl.InheritanceFlags]::ContainerInHerit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInHerit
$PropagationFlagAdmin = [System.Security.AccessControl.PropagationFlags]::None
$objTypeAdmin = [System.Security.AccessControl.AccessControlType]::Allow
$objUserAdmin = New-Object System.Security.Principal.NTAccount("BUILTIN\Administrators")
$objACEAdmin = New-Object System.Security.AccessControl.FileSystemAccessRule($objUserAdmin, $colRightsAdmin, $objTypeAdmin)
$objACLAdmin = Get-ACL "$Item"
$objACLAdmin.AddAccessRule($objACEAdmin)
Set-ACL "$Item" $objACLAdmin我正在使用外接+ icacls尝试重新设置所有权限。这最初运行良好,因为继承标志也会被重置。
然后,我使用链接中描述的方法在我的文件夹上设置适当的权限和继承,并让继承执行rest - Powershell & .net。
脚本工作在我的测试目录结构上。但是,在处理完文件夹和文件之后,当icacls命令运行时,我将收到一条拒绝权限的消息(外接命令运行时没有问题)。然后脚本的其余部分就失败了。
我知道我可以使用RemoveAccessRule($objACE)从对象中删除权限,但是我还没有弄清楚如何对所有已定义的用户权限进行操作。
我想用一个干净的板子启动文件夹和文件,然后应用权限。我发现的所有示例只显示如何删除特定用户的权限。
最初的许可清理有什么问题吗?
发布于 2015-08-13 17:55:15
最后我想出了一些乱七八糟的办法。
在我从Linux服务器获得数据的同步副本之后,我使用机器人复制将所有数据从一个文件夹“移动”到另一个文件夹。这将完全重置所有文件的所有权限。
做完这些之后,我学到了更多关于设置权限的知识,并意识到我一直在犯错误。
我漫无目的地使用这个对象来删除权限。
$acl.RemoveAccessRule($ace) _Out-空
在我有机会设置任何其他权限之前,这实际上是删除了文件上的所有权限。所以我取消了调整权限的能力。
一旦我意识到这一点,我就使用属性IdentityReference和IsInherited的组合来选择性地锁定我要删除的权限。
剧本又大又丑,但似乎行得通。
https://stackoverflow.com/questions/31664080
复制相似问题