内核的源代码如下所示:
让我们以settimeofday()
设置内核时间为例,这将需要root权限
有一个security_settime()
检查安全性以设置时间的功能
它调用cap_settime(
) 使用该capable()
函数
capable(int capability)
[内核/capability.c]
这将检查当前用户是否有能力做某些事情,并且在设定时间的情况下,该上限是CAP_SYS_TIME
int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz)
{
static int firsttime = 1;
int error = 0;
if (tv && !timespec_valid(tv))
return -EINVAL;
error = security_settime(tv, tz);
if (error)
return error;
if (tz) {
sys_tz = *tz;
update_vsyscall_tz();
if (firsttime) {
firsttime = 0;
if (!tv)
warp_clock();
}
}
if (tv)
return do_settimeofday(tv);
return 0;
}