Answers:
chmod
是文件系统操作,而不是特权指令。文件系统权限不在硬件级别处理。该软件(特别是OS)看到,调用系统调用的进程没有足够的权限来对文件系统对象执行操作,并且系统调用返回了权限错误。
实际上,您在问两个不同的问题:
chmod 777 /
?回答2:
chmod
从libc内部调用一个函数(通常也称为chmod()
)。此函数检查调用方是否具有足够的操作特权-如果没有,则返回error EPERM
。
1的答案更有趣:
确切的机制取决于操作系统和硬件平台,但基本上是这样的:所有现代处理器都具有内置的安全功能。这使操作系统可以告诉处理器:“运行该程序,但不要让它执行这些特权指令”。因此,处理器本身将对允许的指令实施限制。如果程序尝试执行特权指令,则处理器会将控制权交还给OS,OS通常会终止行为异常的程序。有关详细信息,请参见例如https://en.wikipedia.org/wiki/Ring_%28computer_security%29