Windows NTFS 权限:“列出文件夹内容”和“读取及执行”的区别
本文目录

两种权限有什么区别?
在传统 Windows 基本权限设置中,两者的区别主要体现在以下方面:
| 对比项 | 列出文件夹内容 | 读取及执行 |
|---|---|---|
| 英文名称 | List Folder Contents | Read & Execute |
| 主要用途 | 浏览文件夹中的文件和子文件夹名称 | 读取文件内容,并允许执行可执行文件 |
| 适用对象 | 文件夹 | 文件夹和文件 |
| 常见继承范围 | 向子文件夹继承,不向文件继承 | 可向子文件夹和文件继承 |
| 是否授予子文件读取权限 | 不会仅凭此项自动授予 | 权限继承到文件后,可授予读取及执行权限 |
上表描述的是基本权限的常见配置。实际权限是否向下继承,还要看高级设置中的“应用于”范围,以及子对象是否启用了继承。Windows 会根据权限条目的继承标志,分别处理子文件夹和文件。参考:Microsoft 权限继承规则
为什么能看到文件名,却打不开文件?
假设有以下目录:
D:\资料
├─ 项目说明.txt
└─ 工具
└─ example.exe
如果用户只获得了“资料”文件夹的“列出文件夹内容”权限,且没有其他相关授权,就可能看到其中的文件名,却无法打开“项目说明.txt”。
原因是:列出目录中的文件名,与读取文件内容,是对不同对象进行的权限检查。
Windows 的底层权限中,“列出文件夹”和“读取数据”使用相同的权限位,但前者作用于目录,后者作用于文件;“遍历文件夹”和“执行文件”也有类似关系。因此,文件夹上的权限不能直接等同于其中每个文件的权限。参考:Microsoft 文件访问权限常量
如果需要用户读取文件,应确保相应文件获得读取权限;如果还需要运行可执行文件,再按需要授予执行权限。
如何检查权限的继承范围?
右键目标文件夹,进入“属性 → 安全 → 高级”,查看相应用户或用户组的权限条目,重点检查:
-
应用于:权限作用于当前文件夹、子文件夹,还是同时包含文件。
-
继承来源:权限来自父文件夹,还是在当前对象上单独设置。
-
子对象继承状态:目标文件或子文件夹是否停止了权限继承。
例如,同样是“读取及执行”,应用于“仅此文件夹”和应用于“此文件夹、子文件夹和文件”,产生的结果并不相同。
排查访问问题时,还应结合用户所属组的授权和拒绝条目判断,不能只看某一个复选框。
Everyone 权限是否适用于匿名用户?
Windows Server 2003 默认情况下不支持该功能。
在 Windows Server 2003 的默认配置中,匿名连接的访问令牌不包含 Everyone 的安全标识符(SID)。因此,仅向 Everyone 授予权限,通常不会使匿名用户获得同样的访问权限。
Windows Server 2008 及更高版本默认也不支持该功能。在这些系统中,匿名连接的访问令牌同样不包含 Everyone 的安全标识符(SID)。若要使匿名用户获得相应访问权限,必须显式授予 Anonymous Logon(匿名登录)账户所需的权限,或调整系统的匿名访问安全策略。
这一行为受“网络访问:让 Everyone 权限应用于匿名用户”安全策略控制。如果启用该策略,匿名用户的权限判断会发生变化。因此,不能把“Everyone 不包含匿名用户”理解为任何配置下都成立的绝对规则。参考:Microsoft 匿名访问策略说明

