如果块设备具有 brwx______ 权限,那么它的安全性如何?

如果块设备具有 brwx______ 权限,那么它的安全性如何?

我无法找到有关块设备权限真正含义的信息。对于块设备来说,读权限是什么意思?这是否意味着我不能做像 hexdump 这样的事情?写权限怎么样?还是执行?

此外,如果您通过授予用户 sudo 权限来仅挂载该特定设备而不是设备上的 r、w 或 x 权限,从而拥有设备上的挂载权限,该怎么办?那会发生什么?

答案1

对于简单的情况(当您像文件一样访问设备时),正如 @Jasen 所写:

  • 读取权限允许从设备读取(转储、fsck以只读模式运行等)
  • 写入权限允许写入设备(用图像覆盖等)
  • 运行、等需要读取的权限fscktune2fs需要修改文件系统。
  • 执行权限被忽略。如果您尝试执行设备文件,即使块设备包含有效的可执行代码,您也会收到“权限被拒绝”的消息。

如果你是 root,你通常会得到CAP_DAC_READ_SEARCHCAP_DAC_OVERRIDE 能力,这意味着权限标志被完全忽略。

为了读写控制更复杂的是:

要执行 ioctl,您需要能够打开文件,这意味着至少您需要读取或写入权限。

其他一切都取决于驱动程序。某些设备驱动程序仅检查CAP_SYS_RAWIO或之类的功能CAP_SYS_ADMIN,某些设备驱动程序使用“无害”ioctl 的读取权限,仅提供信息和其他 ioctl 的读+写权限。设备驱动程序可能使用执行权限进行 ioctl 权限检查,但我不知道有任何驱动程序可以执行此操作。

为了更容易:

系统mount调用仅检查两件事:

  1. 你需要能够抵达设备文件。这意味着设备文件路径上的所有目录都需要至少设置执行权限位(或者您需要具有该CAP_DAC_READ_SEARCH功能)。
  2. 你需要具备这种CAP_SYS_ADMIN能力(当你是 root 时通常会获得这种能力)

设备文件本身的权限位在安装时完全被忽略,并且不会以任何方式影响对已安装文件系统的访问。

使用须藤以具有所有可用功能的root身份运行执行的程序,这意味着所有权限检查都被忽略,并且正如@Jasen在评论中所写,/bin/mount通常是setuid-root,这导致它始终获得所有可用功能,因此权限位没有影响在mount大多数 Linux 发行版上和其他unixoid操作系统

编辑:有关功能的部分是 Linux 特定的。其他 unixoid 操作系统(例如 BSD 或 OSX)不会将 root 的特殊能力分为功能,因此当提到功能时,您只需要成为 root 即可。根据可用的联机帮助页,检查mount与我描述的 Linux 特定检查类似。似乎没有操作系统在安装时检查权限位。

答案2

read 允许读取(例如 hexdump) write 允许写入(例如将图像写入设备) 组合起来这意味着您可以使用“hexedit”等工具来查看和修改内容。

我不知道 x 允许什么(可能它允许 ioctl?)

因为权限brwx______意味着只有所有者(通常root)才能执行这些操作。

相关内容