4 Answers
4

I found a way. I used GNU stat (stat (GNU coreutils) 8.19) to look at "Access", "Modify" and "Change" timestamps of a file.

I could update the "Change" time by doing a chmod u+x on the file. "Modify" and "Access" timestamps remained the same.

I could update "Access" file by doing a cat on it. "Modify" and "Change" timestamps remained the same.

I wrote a small C program that just does an open(filename, O_WRONLY);, writes a single byte to the file descriptor, and then a close(filedes); on the resulting file descriptor. stat showed no change on the subject file's "Access" timestamp, but "Modify" and "Change" timestamps got updated.

This was all under Linux 3.5.4, a fairly recently update Arch Linux laptop, on an Ext4 filesystem.

The utime() system call changes the access and modification times of
the inode specified by filename to the actime and modtime fields of
times respectively.

If times is NULL, then the access and modification times of the file
are set to the current time.

Changing timestamps is permitted when: either the process has appropri‐
ate privileges, or the effective user ID equals the user ID of the
file, or times is NULL and the process has write permission for the
file.