代码之家  ›  专栏  ›  技术社区  ›  sudeepdino008

sudo模式和内核模式之间有区别吗?

  •  26
  • sudeepdino008  · 技术社区  · 10 年前

    在类UNIX系统中,我们有用户模式和内核模式。有些指令在用户模式下无法访问。然而,当我们这样做时 sudo ,我们可以访问操作系统的许多关键部分,执行关键操作。

    我的问题是:当程序在 苏多牌手表 模式,整个程序是否以内核模式运行?或者 苏多牌手表 mode只是一个管理用户,其权限仅仅是内核可以执行的操作的子集?

    2 回复  |  直到 10 年前
        1
  •  33
  •   Sridhar Sarnobat    2 年前

    是的 sudo kernel 模式

    内核模式与 CPU modes 。大多数处理器(尤其是所有处理器都运行一个通用的Linux内核,而不是 µCLinux 一种)例如,笔记本电脑内的Intel处理器有多种操作模式,至少有两种:特权(或 supervisor )模式,其中所有 机器 指令是可能的(包括最不安全的指令,如配置 MMU ,禁用 interrupts ,停止机器 身体的 I/O,即在网络上发送字节,或发送到打印机或磁盘) user mode 禁止某些机器指令(特别是物理I/O指令、MMU配置、中断禁用等)

    在Linux上,只有内核代码(包括内核模块)以内核模式运行。 其他一切都处于用户模式。

    应用程序(甚至是以root身份运行的命令)以用户模式执行,并通过 system calls (这是应用程序与内核交互的唯一方式) syscalls(2) 。所以应用程序代码看到“ virtual machine “能够执行系统调用和执行用户模式指令。内核管理身份验证和凭据(请参阅 credentials(7) & capabilities(7) ...)

    苏多牌手表 只是发出命令(使用 setuid 技术)的权限(即用户id 0)。然后,可能会有更多的系统调用。。。但是命令(即 process 运行该命令)仍在用户模式下运行,并使用 virtual memory 并且有它的 address space .

        2
  •  17
  •   Kevin Panko Matthew Woodard    10 年前

    没有这样的事情 sudo 模式只有用户空间和内核空间。

    正如您所说,内核模式可以执行CPU提供的任何指令,并对硬件执行任何操作。用户模式程序只能访问映射到正在运行的进程的内存,并且被阻止进行任何直接的硬件访问。通过系统调用机制,用户模式程序可以调用内核代码,内核代码将代表其执行硬件访问,并将结果返回到用户空间。

    在用户空间中,对非root用户有其他限制( root 是用户ID号 0 ). 例如,他们只能访问某些文件,并且只能监听1024以上的TCP端口。跑步 苏多牌手表 将作为根用户启动进程,该用户没有这些限制。

    但是作为根用户运行的进程(通过 苏多牌手表 )仍然在用户空间中运行,并且仍然受到暗示的所有相同限制。