【问题标题】:What Really Protects File Priveleges?什么真正保护文件特权?
【发布时间】:2015-02-18 21:37:09
【问题描述】:

例如,在 Windows 和所有操作系统中,如果设置了该规则,则存在“阻止”写入文件的文件权限。

这很难描述,但请听。使用 C 语言编码的人显然会使用某种形式的框架来轻松修改文件。使用内置的 .Net 框架,微软显然会在他们的类中防止在写入文件之前检查文件权限。由于文件权限是通过软件而非硬件存储的,那么真正防止文件被篡改的原因是什么?

让我们跳到大会。假设我创建了一个直接访问硬盘数据并更改文件字节的汇编程序。文件权限怎么可能阻止我这样做?我想我想问的是,如果编译的程序在写入文件之前不检查文件权限,文件权限如何真正保持安全?

【问题讨论】:

  • “访问控制”是比用户操作更底层的概念。
  • 您只能从设备驱动程序直接访问硬件,这些设备驱动程序必须具有正确的权限才能开始加载。用户级代码必须通过操作系统 API 调用才能访问文件系统,并且操作系统将强制执行权限。
  • 好吧,酷。在操作系统安装过程中呢?显然,当安装操作系统时,驱动程序还没有设置,操作系统的每个部分也没有设置。如果没有 API 和驱动程序,那么如何在硬盘上创建文件层次结构?
  • 在操作系统安装过程中,操作系统处于控制之中,它实际上在安装开始时就加载了基本的设备驱动程序。
  • “微软显然会在他们的类中防止在写入文件之前检查文件权限”是不正确的。代码在操作系统内部。

标签: security


【解决方案1】:

假设我创建了一个直接访问硬盘驱动器数据并更改文件字节的汇编程序。文件权限怎么可能阻止我这样做?

如果您在程序集中编写,您的程序集仍会在 CPU mode 中运行,这会阻止直接访问内存和设备。

CPU 模式 … 对 CPU 运行的某些进程可以执行的操作的类型和范围进行限制。这种设计允许操作系统以比应用软件更多的权限运行。

您的代码仍需要发出 system calls 以使操作系统与不属于您的进程和设备的内存进行交互。

系统调用是程序向操作系统内核请求服务的方式。这可能包括硬件相关服务(例如访问硬盘)、创建和执行新进程以及与集成内核服务通信(例如调度)。

操作系统通过独占切换 CPU 模式的能力和精心设计系统调用来维护安全性,以便它们安全可供用户级代码启动。

【讨论】:

    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2013-05-16
    • 2012-09-05
    相关资源
    最近更新 更多