我知道这是一个有点基本的问题,也许是一个愚蠢的问题,但我一直无法找到答案。
我知道每个文件都有"Executable"
位。
我假设需要的程序,root
由root
用户和root
组拥有的不会有Executable
位 forOther
并且会阻止非 root 用户执行这些。但是在/bin
和/sbin
目录中,我看到所有文件都具有类似的权限-rwxr-xr-x
那么究竟是什么决定了用户是否需要拥有 root 权限才能执行某些操作呢?
Rma*_*ano 13
有时,它在代码中。例如,中途hwclock.c
,你会发现:
if (getuid() == 0)
permitted = TRUE;
else {
/* program is designed to run setuid (in some situations) */
if (set || systohc || adjust) {
warnx(_("Sorry, only the superuser can change "
"the Hardware Clock."));
[...]
Run Code Online (Sandbox Code Playgroud)
无论您是否是 root,这都会改变程序的行为。
在大多数其他情况下,它是隐式的;委托给内核。例如,如果程序调用让您重新启动系统的系统调用,则它只有在您是 root 时才能工作。如果您不是 root,您将有一个“权限被拒绝”错误,应用程序(如果编写得很好)只是向您报告。或者您正在尝试删除文件;如果您对该文件有正确的权限,它就会成功;如果不是,则取决于您是否是 root 用户 ---rm
调用时unlink()
内核会检查权限。
所以不,原则上你不能说只查看可执行文件的权限,如果程序需要 root 权限。很多程序只会在某些操作中需要它们,所以做这样的事情真的很困难。的情况hwclock
是一个(任何人都可以读取时钟,但只有 root 可以设置它),但有数百个(kill
, rm
, cat
... )
然后是setuid程序的相关和有趣的世界......
归档时间: |
|
查看次数: |
961 次 |
最近记录: |