繁体   English   中英

如何为特定目录的管理员分配目录权限?

[英]How to assign directory permissions to administrator for a particular directory?

我正在尝试仅向管理员分配权限,并拒绝其他非管理员用户的访问。 以下是代码-

DirectoryInfo di = new DirectoryInfo(@"C:\C00");

DirectorySecurity dirSec = di.GetAccessControl();
dirSec.SetAccessRuleProtection(true, false);

SecurityIdentifier systemSid = new SecurityIdentifier(WellKnownSidType.LocalSystemSid, null);
NTAccount systemAccount = (NTAccount)systemSid.Translate(typeof(NTAccount));

SecurityIdentifier adminSid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
NTAccount adminAccount = (NTAccount)adminSid.Translate(typeof(NTAccount));

SecurityIdentifier userSid = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
NTAccount userAccount = (NTAccount)userSid.Translate(typeof(NTAccount));

//access rule 1
dirSec.AddAccessRule(new FileSystemAccessRule(systemAccount, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
//access rule 2
dirSec.AddAccessRule(new FileSystemAccessRule(adminAccount, FileSystemRights.Read, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
//access rule 3
dirSec.AddAccessRule(new FileSystemAccessRule(userAccount, FileSystemRights.Read, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Deny));
            di.SetAccessControl(dirSec);
return;

使用上面的代码,即使管理员也无法访问该文件夹,但是如果注释中未将访问规则表示为“访问规则3”,则它可以按预期工作。有人可以向我明确说明为什么会发生这种情况吗?

请参阅下图以更好地了解DACL的工作原理

DACL可以允许访问一个线程,而拒绝访问另一个线程

当明确授予或拒绝所请求的访问权限时,Windows将停止检查访问控制条目。 ACE的顺序非常重要。 请注意,如果示例中的ACE顺序不同,则系统可能已授予对线程A的访问权限。

关于拒绝ACE的一些注意事项

在大多数情况下,可以使用允许访问的ACE控制对对象的访问。 您不需要明确拒绝访问对象。 例外是当ACE允许访问组并且您要拒绝对组成员的访问时。 为此,请在组中允许访问的ACE之前,将用户拒绝访问的ACE放置在DACL中。 请注意,ACE的顺序很重要,因为系统会按顺序读取ACE,直到允许或拒绝访问为止。 用户的拒绝访问的ACE必须首先出现; 否则,当系统读取该组的允许访问的ACE时,它将向受限用户授予访问权限。

AccessCheck如何工作

系统如何使用ACL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM