1

我有一个程序需要更改系统时间,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));
}
4

0 回答 0