...
Gee, how long are we going to argue about this before someone goes to the
kernel to see what the h*ll it's doing and then consult the POSIX docs to
see if there are any rules.
I quote the stat(2) manpage (Linux 1.175):
Not all of the Linux filesystems implement all of the time
fields. Traditionally, st_atime is changed by mknod(2),
utime(2), read(2), write(2), and truncate(2).
Traditionally, st_mtime is changed by mknod(2), utime(2),
and write(2). The st_mtime is not changed for changes in
owner, group, hard link count, or mode.
Traditionally, st_ctime is changed by writing or by set-
ting inode information (i.e., owner, group, link count,
mode, etc.).
--Ricky