首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重置文件/文件夹权限&设置新权限

重置文件/文件夹权限&设置新权限
EN

Stack Overflow用户
提问于 2015-07-27 22:01:17
回答 1查看 3.5K关注 0票数 1

尝试使用powershell重置从Linux机器复制的文件/文件夹的权限。

结构看起来类似于

代码语言:javascript
复制
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。然后循环遍历第一级文件夹,以禁用继承。然后将权限应用于文件夹。

这是我所拥有的一个样本。它只对我想设置的每个特定权限重复自己。

代码语言:javascript
复制
    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)从对象中删除权限,但是我还没有弄清楚如何对所有已定义的用户权限进行操作。

我想用一个干净的板子启动文件夹和文件,然后应用权限。我发现的所有示例只显示如何删除特定用户的权限。

最初的许可清理有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2015-08-13 17:55:15

最后我想出了一些乱七八糟的办法。

在我从Linux服务器获得数据的同步副本之后,我使用机器人复制将所有数据从一个文件夹“移动”到另一个文件夹。这将完全重置所有文件的所有权限。

做完这些之后,我学到了更多关于设置权限的知识,并意识到我一直在犯错误。

我漫无目的地使用这个对象来删除权限。

$acl.RemoveAccessRule($ace) _Out-空

在我有机会设置任何其他权限之前,这实际上是删除了文件上的所有权限。所以我取消了调整权限的能力。

一旦我意识到这一点,我就使用属性IdentityReferenceIsInherited的组合来选择性地锁定我要删除的权限。

剧本又大又丑,但似乎行得通。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31664080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档