Wie ändert man die Eigenschaft "Letzte Statusänderung" (ctime) einer Datei in Unix?

8

Ich weiß, dass es eine Möglichkeit gibt, sowohl Modifikation '( mtime ) als auch letzter Zugriff zu ändern ( atime ) Zeiteigenschaften einer bestimmten Datei in Unix System mit dem Befehl " touch ". Aber ich frage mich, ob es auch eine Möglichkeit gibt, die Eigenschaft "Letzte Statusänderung" ( ctime ) zu ändern?

    
Emil 01.12.2011, 19:04
quelle

2 Antworten

7

ctime ist die Zeit, zu der der Inode der Datei zuletzt geändert wurde. mtime ist das letzte Mal, dass der Inhalt der Datei geändert wurde. Um ctime zu modifizieren, musst du etwas mit dem Inode machen, wie zum Beispiel ein chmod oder chown für die Datei.

Wenn Sie den Inhalt der Datei ändern, wird auch ctime aktualisiert, da die Werte atime / mtime / ctime im Inode gespeichert werden. Durch die Änderung von mtime wird auch ctime aktualisiert.

    
Marc B 01.12.2011, 19:09
quelle
0

Verwenden Sie den Systemaufruf "utime". Wenn Sie seine Manpage nachschlagen, wird es auch utimes geben, die Mikrosekundenauflösung haben, und eine Verbindung zu utzensat, die Nanosekundenauflösung hat.

Jede Änderung an der Inode wie eine solche Änderung der Zeiten setzt "ctime" auf die aktuelle Zeit, also würde ctime auf etwas in der Vergangenheit setzen, um es sofort in die Gegenwart zurück zu kehren. Sie haben das vor langer Zeit erkannt, also gibt es keine Schnittstelle, um ctime einzustellen.

Dies hilft auch, die Integrität des Systems zu erhalten: Sie können sich mit Zeit und Zeit herumschlagen, aber ctime wird vom System verwaltet. (Ein Hacker könnte zum Beispiel Ihren / bin / login ändern, um ihm Zugriff zu gewähren, selbst wenn Sie seinen / etc / passwd-Eintrag entfernen. Sie sehen ihn wegen der ungewöhnlichen Zeit in der Datei. Das nächste Mal ändert er die mtime zurück zum Zeitpunkt des Systems wurde installiert, aber er kann die ctime nicht verstecken!).

    
user242579 30.04.2017 06:49
quelle

Tags und Links