using System.Security.AccessControl;
using System.IO;
using System.Security.Principal;

取得目录的访问控制和审核安全(ACL)

DirectorySecurity fileAcl = Directory.GetAccessControl(filePath);

文件夹权限继承控制

fileAcl.SetAccessRuleProtection(true, true);//取消权限继承,且保留继承的访问规则
fileAcl.SetAccessRuleProtection(true, true);//取消权限继承,且移除继承的访问规则
fileAcl.SetAccessRuleProtection(false, true);//允许权限继承,且忽略第二个参数

访问规则访问控制项创建

FileSystemAccessRule everyoneRule = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
FileSystemAccessRule everyoneRule1 = new FileSystemAccessRule("Everyone", FileSystemRights.Modify, AccessControlType.Allow);
            //"Everyone"用户账户名称
            //FileSystemRights.FullControl 访问规则
            //AccessControlType.Allow 允许访问受保护对象,AccessControlType.Deny拒绝访问受保护对象
SID也就是安全标识符(Security Identifiers),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,
将给网络上的每一个帐户发布一个唯一的 SID。Windows 中的内部进程将引用帐户的 SID 而不是帐户的用户或组名。
如果创建帐户,再删除帐户,然后使用相同的用户名创建另一个帐户,则新帐户将不具有授权给前一个帐户的权力或权限,
原因是该帐户具有不同的 SID 号。安全标识符也被称为安全 ID 或 SID。

修改访问控制列表(ACL)

            bool result = false;
//将指定的授权规则添加到访问控制列表 (ACL)。
fileAcl.ModifyAccessRule(AccessControlModification.Add, everyoneRule,out result); //从 ACL 移除所含安全性标识符 (SID) 和访问掩码与指定授权规则一样的授权规则。
fileAcl.ModifyAccessRule(AccessControlModification.Remove, everyoneRule, out result);
//从 ACL 移除所含 SID 与指定授权规则一样的授权规则。
fileAcl.ModifyAccessRule(AccessControlModification.RemoveAll, everyoneRule, out result);
//从 ACL 移除与指定的授权规则完全匹配的授权规则。
fileAcl.ModifyAccessRule(AccessControlModification.RemoveSpecific, everyoneRule, out result); //从 ACL 移除所含 SID 与指定授权规则一样的授权规则,然后将指定的授权规则添加到 ACL。
fileAcl.ModifyAccessRule(AccessControlModification.Reset, everyoneRule, out result);
//从 ACL 移除所有授权规则,然后将指定的授权规则添加到 ACL。
fileAcl.ModifyAccessRule(AccessControlModification.Set, everyoneRule, out result); //权限追加
fileAcl.AddAccessRule(everyoneRule);
//权限删除
fileAcl.RemoveAccessRule(everyoneRule);
//从当前文件或目录移除所有匹配的允许或拒绝访问控制列表 (ACL) 权限。
fileAcl.RemoveAccessRuleAll(everyoneRule);
//从当前文件或目录移除指定用户的所有访问控制列表 (ACL) 权限。
fileAcl.RemoveAccessRuleSpecific(everyoneRule);
//从当前文件或目录移除单个匹配的允许或拒绝访问控制列表 (ACL) 权限。

遍历ACL中的ACE

            AuthorizationRuleCollection rules = fileAcl.GetAccessRules(true, true, typeof(NTAccount));
// AuthorizationRule Rule = rules[0];
foreach (FileSystemAccessRule rule in rules)
{
if(rule.IdentityReference.Value.CompareTo("Users")==0)
{
fileAcl.RemoveAccessRule(rule);
}
}

C#文件夹权限操作整理的更多相关文章

  1. ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 2、linux 如何修改只读文件 3、ubuntu安装

    1.ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 答案:需要超级用户权限 sudo 2.linux 如何修改只读文件 答案:可以使用chmod命令,为改文件提供其他的权限.u ...

  2. python 查看文件夹权限组和用OS模块操作文件夹

    @建议操作server服务器文件夹时可以映射网络驱动盘 import win32securityimport ntsecuritycon as con FILENAME = r'D:\tmp\acc_ ...

  3. linux文件及文件夹权限

    以前上学的时候简单了解了下linux,现在对它的认识也只停留在一些小白命令上.以为我只要不是做服务器端开发的应该不会去碰吧,工作了才知道做开发的多少还是要熟悉一些linux的,至少你的项目会部署在li ...

  4. Linux chmod命令修改文件与文件夹权限的命令附实例

    Linux chmod命令修改文件与文件夹权限的命令附实例 作者:佚名 字体:[增加 减小] 来源:互联网 时间:05-01 20:46:07我要评论 在linux中要修改一个文件夹或文件的权限我们需 ...

  5. Linux命令(14)文件和文件夹权限管理:chmod

    linux文件和文件夹权限简介: chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限. Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方 ...

  6. linux 文件夹权限及umask

    先创建一个目录,看看权限: $ ll 总用量 drwxrwxr-x huangxm huangxm 2月 : ./ drwxr-xr-x huangxm huangxm 2月 : ../ drwxrw ...

  7. 文件和文件夹权限-Win7公共盘中出现大量临时文件

    公司中有一个文件服务器,给不同部门和员工设置了不同的权限,最近有员工(没有修改权限,有读取及执行,读取,写入)反映在公共盘上修改文件的时候会产生大量的临时文件,添加上修改权限之后就可以了,然后被同事问 ...

  8. python之文件的读写和文件目录以及文件夹的操作实现代码

    这篇文章主要介绍了python之文件的读写和文件目录以及文件夹的操作实现代码,需要的朋友可以参考下 为了安全起见,最好还是给打开的文件对象指定一个名字,这样在完成操作之后可以迅速关闭文件,防止一些无用 ...

  9. Deepin中设置文件或文件夹权限

    Deepin中设置文件或文件夹权限 -R 递归进行某项操作,不论是删除文件夹或者修改文件夹下所有文件权限   权限更改,777相当于完全控制权限: 更改一个文件夹或文件的权限:chmod 777 文件 ...

随机推荐

  1. noip第24课资料

  2. JObject,JArray的基本操作

    引用:https://www.cnblogs.com/dacongge/p/6957074.html 1.JObject:基本的json对象 /// <summary> /// Gets ...

  3. 利用 awk 统计nginx 中某一个用户的访问次数

    线上总是会遇到攻击,所以就需要分析 access.log 看看那些用户的访问次数不正常,针对这些不正常的用户,要做处理,以 access.log为例说明下怎么统计. 通过 access.log 日志来 ...

  4. phantomjs的安装和使用链接

    1.先下载phantomjs并解压2.将phantomjs的bin目录配置到环境变量中3.测试phantomjs,cmd下输入phantomjs进入 (按 Ctrl + c 组 合键退出和 phant ...

  5. 复习java基础

    十进制转换成二进制:     方法:整除法,计数方式从右往左,二进制中非0即1.例子如下: 计数方式是从右往左进行,然后填写数字的顺序是余数优先 二进制转换成十进制: 方法:乘二法,例如二进制数字为: ...

  6. Python爬虫1-使用urlopen

    GitHub代码练习地址:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac01_urlopen.py 爬虫简介- 爬虫定义 ...

  7. (爬虫向)python_json学习笔记

    JSON学习笔记 - 在线工具 - https://www.sojson.com/ - http://www.w3school.com.cn/json/ - http://www.runoob.com ...

  8. Netty Decoder:ByteToMessageDecoder

    1. ByteToMessageDecoder 这个类是解码器的基类,其中描述了解码器基本的工作方式和实现原理::还定义了一个解码的抽象方法decode,这个方法由业务实现,负责将一段字节数据解码为具 ...

  9. 用 VSCode 编写 python

    一.coding 1.选择一个Python解释器 通过命令选项板(⇧⌘P),键入Python:Select Interpreter命令,然后选择一个解释器. 成功后左下角出现: 2.运行代码 二.重构 ...

  10. 利用 Linux tap/tun 虚拟设备写一个 ICMP echo 程序

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面两篇文章已 ...