Como o @Celada disse, isso é realmente fácil de testar.
Uma nota, no entanto: ctime é a última vez em que as informações do inode foram alteradas (o número do inode não muda).
Então:
- If a file's content is stored outside its inode, changing its content will change the mtime to the present, but will that changes its ctime and atime to the present?
Se você alterar o conteúdo, o mtime será alterado, mas também o ctime , porque os registros de data e hora do arquivo (e talvez seu tamanho) serão atualizados e essas informações serão armazenadas no inode.
Além disso, digamos que este é um arquivo de texto e você modifica seu conteúdo usando vi , então o atime também será atualizado porque obviamente vi lerá o arquivo antes de exibi-lo.
Exemplo:
$ touch file1
$ stat file1
Access: 2015-05-06 19:11:41.887622158 +0200
Modify: 2015-05-06 19:11:41.887622158 +0200
Change: 2015-05-06 19:11:41.887622158 +0200
$ echo "hello" >> file1
$ stat file1
Access: 2015-05-06 19:11:41.887622158 +0200
Modify: 2015-05-06 19:12:27.816047883 +0200
Change: 2015-05-06 19:12:27.816047883 +0200
- If we change a file's attributes stored in its inode, that will change ctime to present, but will that change mtime and atime to present?
Se você alterar apenas o atributo do arquivo, apenas as informações armazenadas no inode serão alteradas. Portanto, sim, somente ctime será alterado.
$ stat file2
Access: 2015-05-06 19:28:09.378880724 +0200
Modify: 2015-05-06 19:28:09.378880724 +0200
Change: 2015-05-06 19:28:09.378880724 +0200
$ chmod 700 file2
$ stat file2
Access: 2015-05-06 19:28:09.378880724 +0200
Modify: 2015-05-06 19:28:09.378880724 +0200
Change: 2015-05-06 19:30:24.679022346 +0200
- Does changing anything related to a file such as its content, attributes, or inode, also change atime?
Como eu disse para a primeira pergunta, se você não precisar ler o arquivo para alterar essas informações, não, atime não será alterado.