gpt4 book ai didi

powershell - 在 Powershell 中创建文件夹时禁用继承并手动应用权限

转载 作者:行者123 更新时间:2023-12-01 19:40:29 25 4
gpt4 key购买 nike

我试图在 Powershell 中创建一个新文件夹,但我不希望它继承任何 NTFS 安全权限并手动添加 2 个用户:创建者和我自己的管理员帐户。

我有这个:

    $FolderPath = "\\srv\path"
New-Item -ItemType directory -Path $FolderPath
$acl = Get-Acl "\\srv\path"
$acl.SetAccessRuleProtection($True, $False)
$acl.Access | %{$acl.RemoveAccessRule($_)} # I remove all security
$acl.SetOwner([System.Security.Principal.NTAccount] $env:USERNAME) # I set the current user as owner
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule('myadminaccount','FullControl','Allow') # I set my admin account as also having access
$acl.AddAccessRule($rule)
Set-Acl $FolderPath $acl | Out-Null

它不起作用,它仍然继承父级的安全权限。

我将其更改为下面的评论,但它不允许用户为他创建的文件夹设置 ACL。在根文件夹(路径)上,他具有更改权限特权...

这是收到的访问错误

enter image description here

他对刚刚用上面代码创建的文件夹应该有什么权限?所有者应该能够自由修改它。

为用户添加了完全控制共享权限,现在我知道该进程没有“SeSecurityPrivilege”。当我添加 $acl.SetAccessRuleProtection($True, $False) 行时会发生这种情况

我怎样才能让它发挥作用?

最佳答案

使用 SetAccessRuleProtection() 方法从继承规则中排除 ACL:

$acl.SetAccessRuleProtection($true,$false)

当设置为 preserveInheritance 时,第二个参数 ( false ) 也会删除现有的继承规则,只保留系统默认的 ACE。

如果您在应用继承保护时遇到问题,请确保在设置访问规则保护之前使用所有权信息更新 ACL:
$acl = Get-Acl "\\srv\path"
# SetOwner
$acl.SetOwner([System.Security.Principal.NTAccount] $env:USERNAME)
# Write updated ownership info back
Set-Acl $FolderPath $acl | Out-Null
# SetAccessRuleProtection
$acl.SetAccessRuleProtection($True, $False)
# Write updated ACL back
Set-Acl $FolderPath $acl | Out-Null

关于powershell - 在 Powershell 中创建文件夹时禁用继承并手动应用权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31721221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com