我有一个程序需要更改系统时间,settimeofday
然后更改文件的权限chmod
。该程序必须使用 sudo 运行才能成功更改日期。
但是,当我使用 sudo 运行程序并显示“不允许操作”时, chmod 失败。如果我在没有sudo 的情况下运行 chmod ,它可以正常工作。
为什么 sudo 可以改变一天中的时间,而不是 chmod?我是文件的所有者。如何让 chmod 在我的程序中工作?
char* file;
struct timeval now;
//.....
now.tv_sec=866208142;
now.tv_usec=290944;
if(settimeofday(&now, NULL) < 0)
{
printf("settimeofday() failed, ""errno = %d\n",errno);
return -1;
}
if (chmod(file, S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH) < 0)
{
printf(error in chmod(%s, %d) - %d (%s)\n", file,
S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH, errno, strerror(errno));
}