Answers:
有时,它在代码中。例如,在中途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."));
[...]
如果您不是root用户,这将更改程序的行为。
在大多数其他情况下,它是隐式的。委托给内核。例如,如果程序调用允许您重新引导系统的系统调用,则只有当您是root用户时,它才可以工作。如果您不是root用户,则将出现“权限被拒绝”错误,该应用程序(如果编写得当)只会向您报告。或者您正在尝试删除文件;如果您对该文件拥有正确的权限,则它将成功;如果不是,则取决于您是否是root用户--- rm
调用时unlink()
内核将检查权限。
因此,不,原则上您不能说,如果程序需要root特权,则仅查看可执行文件的权限。许多程序只需要某些操作就可以使用它们,因此很难做到这一点。的情况下,hwclock
是一个(任何人都可以读取时钟,但只有root可以设置),但也有数百人(kill
,rm
,cat
...)
然后是setuid程序的相关且有趣的世界...
/bin
或/sbin
目录执行任何程序。问题在于某些程序运行的不同,具体取决于哪个用户运行它们。