使用PowerShell管理文件访问权限

文件和目录的权限管理是一项复杂且耗时的工作,尤其是在Windows环境中,windows环境中,文件和目录权限管理使用图形化界面进行标准操作。但Powershell将能使这项工作更快更容易。

Powershell能够完成权限管理的哪些操作呢

  • 列出文件和目录权限设置
  • 添加文件和目录权限
  • 移除文件和目录权限
  • 修改文件和目录的属主
  • 启用和禁用目录的继承属性

列出NTFS文件和目录权限

PS C:\Windows\System32> [System.Enum]::GetNames([System.Security.AccessControl.FileSystemRights])

使用PowerShell管理文件访问权限

上述权限类型,在windows系统中,可大致分为两类

基本权限

  • Full Control:用户可以修改、添加、移动和删除文件和目录以及相应的属性,换而言之,用户可以改变所有文件以及子目录的权限设定。
  • Modify:用户可以修改文件和文件属性,包括删除或添加文件到目录或者删除、添加属性到文件
  • Read & Execute:用户可以运行可执行文件,包括脚本
  • Read:用户能够查看文件、文件属性和目录
  • Write:用户能够写入新数据到文件并能将文件添加到目录

高级权限

  • Traverse Folder/Execute File:允许用户即使没有文件和目录的权限,也允许其浏览文件夹。此外,也允许执行文件
  • List Folder/Read Data:允许列出文件以及子目录,并能够访问文件中包含的内容
  • Read Attributes:查看文件或目录的属性
  • Write Attributes:更改文件或目录的属性
  • Read Extended Attributes:查看文件或目录的扩展属性
  • Write Extended Attributes:更改文件或目录的扩展属性
  • Create Files/Write Data:允许在目录中创建文件并能更改目录中的文件(change)
  • Create Folders/Append Data:允许在当前目录中创建目录,允许追加数据到文件,但是不允许更改(change)、删除或者覆盖替换文件中的内容
  • Delete:允许删除文件或目录
  • Read Permissions:用户可以读取文件或目录的权限设置
  • Change Permission:用户可以更改(change) 文件或目录的权限设置
  • Take Ownership:用户可以取得文件或目录的所有权
  • Synchronize:使用文件或目录进行同步。(原文是Allows or denies different threads to wait on the handle for the file or folder and synchronize with another thread that may signal it. This permission applies only to multithreaded, multiprocessing programs.,不太理解,有大神知道的话,烦请告知,多谢)

检索文件或目录的权限设置

使用get-ACL来检索文件或目录的权限设置
Get-ACL -Path "Folder1"

使用PowerShell管理文件访问权限

默认输出不易读,可以使用下面的方式
(Get-ACL -Path "Folder1").Access | Format-Table IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -AutoSize

使用PowerShell管理文件访问权限

新建一个文件test1.txt,查看它的权限配置
(Get-ACL -Path "Test1.txt").Access | Format-Table IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -AutoSize

使用PowerShell管理文件访问权限

修改文件或目录的权限设置

使用powershell来修改文件或目录的权限,一般流程如下

  • 检索已存在的ACL规则
  • 创建需要应用的目标规则,FileSystemAccessRule语法结构类似:Identity String,FileSystemRights,AccessControlType
  • 添加新的ACL规则到已存在的规则集
  • 使用Set-ACL将前面新建的ACL规则应用到目标文件或目录
$ACL = Get-ACL -Path "Test1.txt"
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("TestUser1","Read","Allow")
$ACL.SetAccessRule($AccessRule)
$ACL | Set-Acl -Path "Test1.txt"
(Get-ACL -Path "Test1.txt").Access | Format-Table IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -AutoSize
使用PowerShell管理文件访问权限

复制权限设置到新的对象上面

我们将文件test1上面的访问权限复制到文件Test2上

Get-ACL -Path "Test1.txt" | Set-ACL -Path "Test2.txt"
(Get-ACL -Path "Test2.txt").Access | Format-Table IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -AutoSize
使用PowerShell管理文件访问权限

移除文件或目录的访问权限

要移除文件或目录的某个访问权限,需要通过与修改权限同样的步骤,但是用的对象方法不一样(前者使用$ACL.SetAccessRule(),而后者使用$ACL.RemoveAccessRule()

$ACL = Get-ACL -Path "Test1.txt"
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("TestUser1","Read","Allow")
$ACL.RemoveAccessRule($AccessRule)
$ACL | Set-Acl -Path "Test1.txt"
(Get-ACL -Path "Test1.txt").Access | Format-Table IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -AutoSize
使用PowerShell管理文件访问权限

修改继承和所有权属性

启用\禁用继承属性

要更改继承属性,我们不得不使用SetAccessRuleProtection方法,它包括两个参数,isProtected:定义是否禁用继承,可用值为(True\False),如果值为True意为禁用继承;`preserveInheritance`:定义在禁用继承时是否保留已继承的权限设置,可用值为(True$False),如果值为$True,将保留继承的权限

$ACL = Get-Acl -Path "Folder1"
$ACL.SetAccessRuleProtection($true,$false)
$ACL | Set-Acl -Path "Folder1"
使用PowerShell管理文件访问权限

有时上述操作可能需要管理员身份,不然会报如下错误:
Set-Acl: The process does not possess the 'SeSecurityPrivilege' privilege which is required for this operation.

修改所有权属性

修改所有权属性,需要定义一个用户账号对象,然后使用SetOwner()方法来完成

$ACL = Get-Acl -Path "Folder1"
$User = New-Object System.Security.Principal.Ntaccount("TestUser1")
$ACL.SetOwner($User)
$ACL | Set-Acl -Path "Folder1"
Get-ACL -Path "Folder1"
使用PowerShell管理文件访问权限

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/7788

(0)
郭靖的头像郭靖
上一篇 2023年3月27日 下午4:25
下一篇 2023年3月28日 下午5:22

相关推荐

  • Hyper-V虚拟机显卡虚拟化VGPU 配置指南V2.0

    ⚠️ 重要前提 🔧 配置脚本(管理员 PowerShell) 运行脚本(管理员权限) 脚本操作流程(交互式步骤) 步骤 操作 说明 1 输入虚拟机名称 输入您要配置的Hyper-V虚拟机名称(区分大小写) 2 确认关闭虚拟机 如果虚拟机正在运行,需要关闭才能继续 3 设置显存分配 输入推荐显存大小(GB),默认1GB 4 确认配置 查看配置参数并确认应用 5…

    2025年6月14日
    2.4K00
  • Windows Server 2012和2016从Evaluation评估版升级到正式版方法(附带产品密钥/key)

    解析说明:什么叫做Evaluation评估板? 微软试用版的系统叫做评估板,使用时间是180天。过期之后就会提示你需要激活。需要永久激活系统首先要转为正式版。 升级总共两个步骤,如果卡住在10%,建议重新安装正式版。 第一步 操作成功完成。 其中ServerDatacenterEval去掉Eval后,就是当前的Edition ID 第二步 下面附上正式版安装…

    2022年12月23日
    1.9K00
  • Windows SMB请求重放攻击分析

    smb中继或叫smb请求重放攻击,B是一个smb服务器,A来进行认证,B将A的认证信息转发到C上,如果A的凭证在C上认证成功就能进行下一步操作,如创建服务执行命令。如果在域中控制了某些常用服务,如:WEB OA系统、文件共享等服务则可以尝试使用SMB中继攻击来引诱域管理员访问达到获取其他机器权限的目的。 环境 192.168.123.10 win 7&nbs…

    2023年3月3日
    1.7K00
  • Pantum打印机连接教程

    1、点击文章末尾的下载文件,下载驱动 2、解压文件后双击执行程序,进行安装,勾选同意后进入下一步 3、选择手动安装 4、选择对应的驱动版本M6518,选择有线网络连接 5、等待程序搜索打印机,如果没有找到打印机,选择手动添加IP,输入192.168.1.66,点击下一步,等待安装 6、此时安装成功 7、在wps中选择对应的打印机M6518,然后点击打印 相关…

    2023年8月3日
    1.6K00
  • 数据库迁移报错,提示默认日期不能为‘0000-00-00 00:00:00’

    将服务器的数据同步到本地或备份还原到本地mysql时,出现莫名其妙的报错,可能有以下这些报错:“Data truncated for column ‘字段名‘ at row 1”,集中在时间的默认值。数据源的mysql版本是5.5.30,有些时间字段默认值设置为0000-00-00 00:00:00。目标mysql版本为5.7.17,查资料发现,MySQL …

    2022年12月2日
    1.6K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信