我的程序需要使用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));
}