chown の uid, gid に -1 を渡して呼び出すと、オーナー権限のないディレクトリでも ctime が更新されてしまうんだけどよいの?
ルートディレクトリを対象に見てみます。
$ stat /
File: `/'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 2 Links: 23
Access: (0555/dr-xr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-08-20 16:24:23.225278266 +0900
Modify: 2014-08-20 14:39:44.462343612 +0900
Change: 2014-08-20 16:35:02.533779300 +0900 # <= これです
$ perl -e 'chown(-1, -1, "/") or die $!'
( 一般ユーザ (vagrant 501:501) で実行しています )
$ stat /
File: `/'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 2 Links: 23
Access: (0555/dr-xr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2014-08-20 16:24:23.225278266 +0900
Modify: 2014-08-20 14:39:44.462343612 +0900
Change: 2014-08-20 16:50:04.448764559 +0900 # <= あれ、更新されている yo !
👻
Mac OS X (Marvcerics) だとこうはならんかった
あれ http://pubs.opengroup.org/onlinepubs/9699919799/functions/chown.html を読むと
IEEE Std 1003.1, 2013 Edition (所謂 POSIX)
「_If both owner and group are -1, the times need not be updated_」 とあるな。やっぱ st_ctime 変える必要無いのか