通过解读,您可以看出这是受保护的 ACE,它使用 Windows NT 5.0 继承模型应用到 C:\Windows。
“可信的安装程序”对 C:\Windows 具有完全控制权限,并具有 C:\Windows 下所有子容器(由于是 CI,仅继承)的 Generic_All 权限。
系统和管理员拥有对 C:\Windows 的 Read、Write、Append、ReadEA、WriteEA、Execute、ReadAttr、WriteAttr、Del、RCtl 和 Sync 权限(等于 SDGRGWGX 权限)。这相当于 Generic_All 减去 Write_Owner 和 Write_DAC 权限;这表示除更改所有者和 ACL 以外,“管理员”和“系统”具有其他全部权限。“BA”和“SY”拥有对子文件和目录对象的 Generic_All 权限。
由于管理员能接管所有权,所以他仍然可以声明 WriteOwnership 权限并在任何情况下取得控制权。管理员和系统在安全方面不相上下。但由于有了该权限,管理员可以绕开 WRP ACL 控制。
CO 还拥有子文件和目录对象的 Generic_All 权限。内置用户拥有对 C:\Windows 的 Read、ReadEA、Execute、ReadAttr、RCtl 和 Sync 权限(等于 GRGX 权限),并拥有 C:\Windows 下子目录和文件的 GRGX 权限。
所有的系统文件和文件夹都包含受保护的 ACL,它们授予“可信的安装程序”完全控制权限。“可信的安装程序”对文件的控制不在系统根目录的声明中表述,而是在 Windows 组件的单独声明中表述。 设置安全文件系统权限在了解文件系统 ACL 的工作原理和解读方法之后,让我们看看如何进行设置。如果正在安装某个应用程序,您应该将它安装到默认的 Program Files 位置。该位置的默认 ACL 将为管理员和本地系统提供完全控制权限,这并无不妥。
如果将应用程序安装到其它位置,或者允许用户选择喜欢的位置安装应用程序,那您将会遇到问题:其它驱动器和系统驱动器的非系统及非应用程序区域的默认 ACL 并不十分安全。在这种情况下,您必须使用受保护的适当 DACL 显式控制文件夹的 ACL。安装应用程序最简单安全的方法是复制 Program Files 文件夹的安全设置。如果选择不这么做,那您可以设置 DACL 使非管理员无法更改 DACL 和可执行文件的所有权,并使其无法在包含可执行文件的目录中写入、附加或删除文件。
如果您设置 DACL,基本规则是不希望管理员或其它用户执行由用户编写的代码。如果存在问题的文件夹位于受信区域(Windows、Program Files 等),则可假定它也是受信的,这时问题更为突出。这样做将允许管理员提升权限 (EoP) 并增加跨用户攻击的风险。因此,如果某位用户可以向文件夹写入文件,则其它用户和管理员应该不能执行这些文件。
乍一看似乎任何时候您都不应该允许用户向 Windows、System、Program Files 的文件夹中写入文件。但有许多充分的理由需要执行这类写入操作。最常见的是记录错误日志数据。如果可执行文件在用户凭据下运行并且需要记录错误,那它需要具备错误日志文件夹的写入/附加权限。(如果将错误记录到多用户系统中每个用户的位置,则需要将记录数据传遍整个系统,而不用与可执行文件相关联。应用程序和服务器通常写入共享文件夹或注册表项。)您会在注册表中发现相同的问题,使用用户权限运行的进程经常会把错误信息存储在特定的机器注册表项中。
请不要将用户可写的文件与可执行文件混放在一起。应该使用不同的目录存放必须信任的文件(例如可执行文件)和必须不被信任的文件(例如可能由不受信任的用户编写的任何文件)。为目录设置适当的 ACL—管理员控制可执行文件,而用户可以读取/执行但不能写入。注册表项和子项也适用相同的原则。
客户端和服务器的不同之处在于:服务器管理员假定比管理员用户具9 7 3 1 2 3 4 5 6 7 4 8 :
本文来源:不详 作者:佚名