C#文件夹权限操作整理

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 2000 中的内部进程将引用帐户的 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);               }
            }

原文地址:https://www.cnblogs.com/cteng-common/p/fileaccess.html

时间: 2024-10-29 16:59:49

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

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

1.ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 答案:需要超级用户权限 sudo 2.linux 如何修改只读文件 答案:可以使用chmod命令,为改文件提供其他的权限.u表示用户.a表示全部.g表示组,r表示可读.w表示可写.x表示可执行,你可以使用“chmod a+w test.c”来添加权限,这是比较方便的直观的方法 3.ubuntu安装samba实现与windows文件共享 为了实现Windows主机与Linux服务器之间的资源共享,Linux操作系统提供了S

linux文件及文件夹权限

以前上学的时候简单了解了下linux,现在对它的认识也只停留在一些小白命令上.以为我只要不是做服务器端开发的应该不会去碰吧,工作了才知道做开发的多少还是要熟悉一些linux的,至少你的项目会部署在linux服务器上吧.以前没搞明白的还是要花时间还回来的.不能再废话了~ 像我这种小白在linux系统下查看文件目录的一般会用ls,其实我们可以用 ll (哎哟哎哟)或者 ls -l 来看更多的一些信息.比如显示如下: 其中最左边的部分显示的就是文件或者文件夹的操作权限,其中: 首先这里的权限有三种,r

linux 文件夹权限及umask

先创建一个目录,看看权限: $ ll 总用量 20 drwxrwxr-x 3 huangxm huangxm 4096 2月 16 16:35 ./ drwxr-xr-x 128 huangxm huangxm 12288 2月 16 16:35 ../ drwxrwxr-x 2 huangxm huangxm 4096 2月 16 16:35 test/ 然后我们将权限更改为444, 即所有都是r权限 $ ll 总用量 20 drwxrwxr-x 3 huangxm huangxm 4096

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

Linux chmod命令修改文件与文件夹权限的命令附实例 作者:佚名 字体:[增加 减小] 来源:互联网 时间:05-01 20:46:07我要评论 在linux中要修改一个文件夹或文件的权限我们需要用到linux chmod命令来做,下面我写了几个简单的实例大家可参考一下 语法:chmod [who] [+ | - | =] [mode] 文件名 命令中各选项的含义为 u 表示“用户(user)”,即文件或目录的所有者.g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户.

关于ntfs文件夹权限的问题

ntfs格式是我们平时经常用的U盘格式或者硬盘格式.如果我们想要访问它的话是需要某些权限的.只有拥有特定权限才能对ntfs格式的文件夹进行操作,今天讲一下ntfs每一个权限的设置和功能. 一.ntfs文件夹权限标准 1.读取:此权限可以查看文件夹内的文件名称,子文件夹的属性. 2.写入:可以在文件夹里写入文件与文件夹.更改文件的属性. 3.列出文件夹目录:除了"读取"权限外,还有"列出子文件夹"的权限.即使用户对此文件夹没有访问权限. 4.读取与运行:它与"

【Java】利用文件输入输出流完成把一个文件夹内的所有文件拷贝的另一的文件夹的操作

一.基本目标 使用Java完成如下的操作: 把一个文件夹内的所有文件拷贝的另一的文件夹,例如,在F盘中有a与b两个文件夹: f:/a里面有一堆文件,运行Java程序之后就会全部复制到f:/b,并且完成重命名,在所有文件之前加rename_的前缀,如果里面有文件夹,则文件夹不重命名,里面的文件进行重命名,同样在所有文件之前加rename_的前缀: 二.制作过程 1.首先主函数非常简单,就是调用了上面FileTest类中的copyFolder函数 public class FileCopy { pu

沙盒模型中各文件夹及操作

某个iphone工程进行文件操作有此工程对应的指定的位置,不能逾越. iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. documents,tmp,app,Library. (NSHomeDirectory()), 手动保存的文件在documents文件里 Nsuserdefaults保存的文件在tmp文件夹里 Documents 目录:您应该将所有de应用程序数据文件写入到这个目录下.这个目录用于存储用户数据或其它应该定期备份的信

文件/文件夹权限设置命令chmod的具体使用方法

chmod是文件/文件夹权限设置的命令,在Linux中常常遇到.本博文下面总结chmod的具体使用方法. Linux/Unix的档案调用权限分为三级,即档案拥有者user.群组group.其它other.u表示该档案的拥有者.g表示与该档案的拥有者属于同一个群体(group)者,o表示其它以外的人,a表示这三者皆是. + 表示添加权限.- 表示取消权限.= 表示唯一设定权限. r表示可读取,w表示可写入,x表示可运行. 举例说明: (1).将档案file1.txt 设为全部人皆可读取: chmo

【Python】Python对文件夹的操作

上一篇介绍了Python对文件的读写操作,现在来介绍一下Python对文件夹的操作.由于我是项目中用到的,所以我就以我的实际应用实例来说明吧.希望对大家有所帮助. 1.实例需求: 现在有一个文件夹myDir,该文件夹中又有n个文件夹dir1,Dir2, ..., dirN,每个文件夹中又有m个文件,这个实例需要达到的目的就是要将这n个文件夹dir1,Dir2, ..., dirN中的所有文件全部写到一个新文件中,该新文件在文件夹myDir下. 2.源代码: test.py代码如下: import