PowerShell设置高级NTFS权限
我正在尝试应用在
Windows安全设置的“高级”选项卡中定义的NTFS权限.一个ACL $规则仅适用于此文件夹,另一个仅适用于子文件夹和文件.
权限经过大量修改,如下所示: (Get-Acl 'L:TestBeezRAPJOURAppels ListCorrect').Access FileSystemRights : FullControl AccessControlType : Allow IdentityReference : BUILTINAdministrators IsInherited : False InheritanceFlags : ContainerInherit,ObjectInherit PropagationFlags : None FileSystemRights : CreateFiles,AppendData,DeleteSubdirectoriesAndFiles,ReadAndExecute,Synchronize AccessControlType : Allow IdentityReference : DomainDirk IsInherited : False InheritanceFlags : None PropagationFlags : None FileSystemRights : DeleteSubdirectoriesAndFiles,Modify,Synchronize AccessControlType : Allow IdentityReference : DomainDirk IsInherited : False InheritanceFlags : ContainerInherit,ObjectInherit PropagationFlags : InheritOnly >除了以下内容外,其他所有内容均已启用:完全控制,写入属性,写入扩展属性,删除,更改权限和获取所有权. >一切都在开启,除了:完全控制,更改权限和获得所有权. 这是我用来应用权限的一段代码.在这种情况下,必须在更改部分中定义: $f = 'L:TestBeezRAPJOURAppels ListWrong' $ADobject = 'DomainUser' $acl = Get-Acl $f $Grant = 'Change' # Remove user/group first $rule = New-Object system.security.AccessControl.FileSystemAccessRule("$ADobject","Read","Allow") $acl.RemoveAccessRuleAll($rule) # Add read permissions if ($Grant -eq 'ReadAndExecute') { $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$ADobject","ReadAndExecute","ContainerInherit,ObjectInherit","None","Allow") } if ($Grant -eq 'Change') { $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$ADobject","Modify","Synchronize","Allow DeleteSubdirectoriesAndFiles") $acl.AddAccessRule($rule) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$ADobject","AppendData","Allow CreateFiles","DeleteSubdirectoriesAndFiles") } if ($Grant -eq 'Modify') { $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$ADobject","Allow") } if ($Grant -eq 'FullControl') { $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$ADobject","FullControl","Allow") } if ($Grant -eq 'ListFolderContents') { $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$ADobject","ContainerInherit","Allow") } $acl.AddAccessRule($rule) Set-Acl $f $acl 我似乎无法正确的语法..谢谢你的帮助. 多亏了这个post,我已经找到了这个部分: >’仅限子文件夹和文件’:“ContainerInherit,ObjectInherit”,“InheritOnly” 解决方法
Windows中的对象访问权限通过
Access Control Lists(ACL)控制,其基本上由
Access Control Entries(ACE)列表组成.每个ACE都是一组属性,用于控制是授予还是拒绝访问,ACE应用于谁,ACE是否从父对象继承,以及是否应由子对象继承.
如果你看一下 > IdentityReference / String:标识ACE适用的受托者(用户,组,计算机……)的对象或字符串. 现在,如果要为给定的受托者分配多个访问权限,您可以使用单个ACE执行此操作: $acl = Get-Acl $path $ace1 = New-Object Security.AccessControl.FileSystemAccessRule 'DOMAINuser','ListDirectory','ContainerInherit,ObjectInherit','InheritOnly','Allow' $acl.AddAccessRule($ace1) $ace2 = New-Object Security.AccessControl.FileSystemAccessRule 'DOMAINuser','ReadAttributes','Allow' $acl.AddAccessRule($ace2) ... 或者通过以逗号分隔的字符串提供权限: $acl = Get-Acl $path $ace = New-Object Security.AccessControl.FileSystemAccessRule 'DOMAINuser','ListDirectory,ReadAttributes,...','Allow' $acl.AddAccessRule($ace) 但请注意,您无法使用相同的ACE授予和拒绝权限.如果要拒绝特定的访问权限,则需要使用单独的ACE执行此操作: $acl = Get-Acl $path $ace1 = New-Object Security.AccessControl.FileSystemAccessRule 'DOMAINuser','Modify','Allow' $acl.AddAccessRule($ace1) $ace2 = New-Object Security.AccessControl.FileSystemAccessRule 'DOMAINuser','CreateDirectories','Deny' $acl.AddAccessRule($ace2) ... 另请注意,显式权限优先于继承权限,Deny优先于Allow. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
- windows-phone-7 – 应用程序图标透明度问题(Windows Phone
- windows-server-2003 – 错误“当前没有可用于登录请求的登
- Windows上的Git:强制使用OpenSSH
- windows – 使用’目标主机无法访问’从同一台计算机ping“
- windows-server-2008 – 如何在IIS7 / Win2008服务器中启用
- Windows与Mac之间密钥检测的Java差异
- Windows Web服务器清单
- Windows – 基于现有生产服务器构建Exchange 2010 CAS的最佳
- 适用于Windows程序员的最佳“官方”脚本语言[已关闭]