Windows上PowerShell配置不同用户对文件的权限

1、Powshell命令操作ACL规则实现不同账户对应用的访问控制

查看目录权限:Get-ACL -Path "C:\Program Files (x86)\Tencent\QQ\Bin"

输出易读模式:(Get-ACL -Path "C:\Program Files (x86)\Tencent\QQ\Bin").Access | Format-Table IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -AutoSize

2、新增文件权限步骤:

1、检索已存在的ACL规则

2、创建需要应用的目标规则,FileSystemAccessRule语法结构类似:Identity String,FileSystemRights,AccessControlType

3、添加新的ACL规则到已存在的规则集

4、使用Set-ACL将前面新建的ACL规则应用到目标文件或目录

3、对应命令如下:

$ACL = Get-ACL -Path "C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("AAAD\test","FullControl","Deny")

$ACL.AddAccessRule($AccessRule)

##########$ACL.SetAccessRule($AccessRule)

$ACL | Set-Acl -Path "C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"

复制权限到新的对象上去,将文件test1上面的访问权限复制到文件Test2上

Get-ACL -Path "Test1.txt" | Set-ACL -Path "Test2.txt"

可能有些新建规则命令有点不一样,会多些参数:

$accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("WIN-HOSTNAME\zyc", "Read,Write", "ContainerInherit, ObjectInherit", "None", "Allow")

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

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

对应命令如下:

$ACL = Get-ACL -Path "C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"

$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("AAAD\test","FullControl","Deny")

$ACL.RemoveAccessRule($AccessRule)

$ACL | Set-Acl -Path "C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"

$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("yangguodong","FullControl","ContainerInherit,ObjectInherit","None","Allow")

$acl.AddAccessRule($rule)

可以通过列表的方式显示所有信息,输入命令 get-acl D:\testacl |fl

5、示例

C:\PS>$newACL = get-acl file0.txt

C:\PS>get-childitem c:\temp -recurse -include *.txt -force | set-acl -aclobject $newacl

6、说明

这些命令将 File0.txt 文件中的安全描述符应用到 C:\Temp 目录及其所有子目录中的所有文本文件。

第一个命令获取当前目录中 File0.txt 文件的安全描述符,并使用赋值运算符 (=) 将其存储在 $newACL 变量中。

管道中的第一个命令使用 Get-ChildItem cmdlet 获取 C:\Temp 目录中的所有文本文件。Recurse 参数将该命令扩展到 C:\temp

的所有子目录。Include 参数将检索的文件限制为具有“.txt”文件扩展名的文件。Force 参数获取本来会被排除的隐藏文件。(

无法使用“c:\temp*.txt”,因为 Recurse 参数作用于目录,而不是文件。)

管道运算符 (|) 将表示检索到的文件的对象发送到 Set-Acl 命令,该命令将 AclObject 参数中的安全描述符应用到管道中的所有

文件。

实际上,最好将 Whatif 参数与可以影响多个资源的所有 Set-Acl 命令一起使用。在此示例中,管道中的第二个命令将为“set-ac

l -aclobject $newacl -whatif”。此命令列出将受该命令影响的文件。在检索结果之后,可以不带 Whatif 参数再次运行该命令。

  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值