使用PowerShell Set-Acl应用ACL权限

时间:2017-03-24 10:43:01

标签: powershell acl

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs 

嗨,当我得到上面的代码并使用我自己的设置应用它时 - 为文件夹添加了用户帐户条目,但是没有应用权限(没有勾选)

任何人都可以帮忙解决这个原因吗?

由于

2 个答案:

答案 0 :(得分:3)

您的评论描述了以下行为:

您的PowerShell脚本成功,但如果您使用资源管理器属性对话框检查权限,则会看到以下内容:

permissions with unfilled checkboxes

这很令人困惑,因为PowerShell查询会确认:

PS> Get-Acl .|fl


Path   : Microsoft.PowerShell.Core\FileSystem::D:\temp\myfolder
Owner  : clijsters\clijsters
Group  : clijsters\Kein
Access : clijsters\NEWUSER Allow  FullControl
        VORDEFINIERT\Administratoren Allow  FullControl
        VORDEFINIERT\Administratoren Allow  268435456
        NT-AUTORITÄT\SYSTEM Allow  FullControl
        [...]

您的ACL已更改。如果您向下滚动复选框列表,您会注意到,“特殊权限”已被选中,如果您点击“高级”,您会注意到,您的权限已设置。

编辑:
正如@AnsgarWiechers所提到的,我错过了一个描述为什么添加了New-Object System.Security.AccessControl.FileSystemAccessRule("username", "FullControl", "Allow")的权限列为特殊权限的部分。

与MSDN上描述的一样,FileSystemAccessRule有4个构造函数,其中一些接受InheritanceFlagsPropagationFlags(例如this one符合您的需求)。如果您使用它们并定义继承行为,则权限将显示为正常权限。

答案 1 :(得分:0)

今天,我正在尝试编译ILSpy并遇到AL1078: Error signing assembly,这是一个权限问题。显示答案的合并。

此powershell脚本将$CurUsr分配给当前登录用户的令牌,并将$CurTgt分配为权限被更改的文件夹。根据需要更改它们。

添加权限:

$CurTgt = "C:\Users\All Users\Microsoft\Crypto\RSA\MachineKeys"
$CurUsr = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$acl = Get-Acl $CurTgt
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($CurUsr,"FullControl","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($AccessRule)
$acl | Set-Acl $CurTgt

删除权限:

$CurTgt = "C:\Users\All Users\Microsoft\Crypto\RSA\MachineKeys"
$CurUsr = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$acl = Get-Acl $CurTgt
$usersid = New-Object System.Security.Principal.Ntaccount ($CurUsr)
$acl.PurgeAccessRules($usersid)
$acl | Set-Acl $CurTgt

参考文献:

Manage ACLs Inheritance Current User