Why do I want to do this? Because I tried changing it out of curiosity, and I could not do it, so my brain tricked me into spending some time on it.
A file has three timestamps associated with it:
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
The field st_atime is changed by file accesses, for example, by execve(2),
mknod(2), pipe(2), utime(2) and read(2) (of more than zero bytes).
The field st_mtime is changed by file modifications, for example, by mknod(2),
truncate(2), utime(2) and write(2) (of more than zero bytes). The
field st_ctime is changed by writing or by setting inode information
(i.e., owner, group, link count, mode, etc.).
A directory listing with ls -l shows a timestamp, and this is the ctime.
The stat(1) utility shows the three timestamps along with some other info:
$ stat tags
File: ‘tags’
Size: 73129 Blocks: 144 IO Block: 4096 regular file
Device: fe00h/65024d Inode: 5506684 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ dag) Gid: ( 100/ users)
Access: 2013-11-20 01:55:34.918454212 +0100
Modify: 2013-11-20 01:55:34.918454212 +0100
Change: 2013-11-20 01:55:34.918454212 +0100
Birth: -
Changing the first two; atime and mtime can be done with the touch utility
with the -t option like this:
$ touch -t 190403061445 file
This is the year 1904, March 6 14:15.
Now stat yields this;
$ stat tags
File: ‘tags’
Size: 73129 Blocks: 144 IO Block: 4096 regular file
Device: fe00h/65024d Inode: 5506684 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ dag) Gid: ( 100/ users)
Access: 1904-03-06 14:45:00.000000000 +0100
Modify: 1904-03-06 14:45:00.000000000 +0100
Change: 2013-11-20 01:56:14.775123866 +0100
Birth: -
Changing the ctime however turned out to be difficult. After an intense
googling session I have learned that there are no system calls for changing
the ctime. An obvious option is to unmount the filesystem, and edit the inode
manually.
Another way to change the ctime, is to change the system clock and touch it:
$ date -s "11/20/2003 01:05:00"
$ touch file
$ stat tags
File: ‘tags’
Size: 73129 Blocks: 144 IO Block: 4096 regular file
Device: fe00h/65024d Inode: 5506684 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ dag) Gid: ( 100/ users)
Access: 2003-11-20 12:48:10.206667431 +0100
Modify: 2003-11-20 12:48:10.206667431 +0100
Change: 2003-11-20 12:48:10.206667431 +0100
Birth: -