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));
}