Вот соответствующий вывод: strace "touch test.txt"
open("test.txt", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK|O_LARGEFILE, 0666) = -1 EACCES (Permission denied)
futimesat(AT_FDCWD, "test.txt", NULL) = 0
Он действительно получает «Отказ в разрешении» при системном вызове open (2) относительно EACCES. См. Соответствующий раздел на utimes (2) справочной странице.
Однако, ему удается обновить временную метку с помощью системного вызова futimesat (2) .
Как указали другие, похоже, что права доступа к каталогу содержат права на обновление меток времени доступа / moficiation.
Однако вы можете изменить атрибут файла на неизменяемый, используя:
chattr +i test.txt
Примечание: это может сделать только root, и это очень жесткий способ запретить доступ к файлам. Но в крайних случаях это может быть полезно. Кроме того, это функция ext2 / 3/4, насколько я знаю, недоступна в других файловых системах.