2017-05-24 2 views
-1

Ich habe eine Weile gesucht, und ich kann nicht ergründen, warum die MD5-Prüfsumme einer symbolischen Verbindung gleich der Datei ist, auf die sie zeigt. In meinem Verständnis a symbolic link is still a file. Da es leer ist, würde ich erwarten, dass ein Symlink einen md5 von d41d8cd98f00b204e9800998ecf8427e hat. (Siehe here)Warum ist die MD5-Prüfsumme einer symbolischen Verbindung gleich der ursprünglichen Datei

jedoch in der Praxis zu testen:

echo Hello World > test 
ln -s test test_symlink 

Dann läuft:

md5deep test test_symlink 

Ausbeuten:

e59ff97941044f85df5297e1c302d260 /tmp/test 
e59ff97941044f85df5297e1c302d260 /tmp/test_symlink 

Weiß jemand, was ich hier fehlt?

+0

Der gesamte * Punkt * eines symbolischen Links soll als transparenter * Zeiger * zum Ziel verwendbar sein - dh Sie können ihn genauso bedienen, als hätten Sie am Ziel gearbeitet (Öffnen und Lesen von Daten, Überprüfen von Metadaten usw.). Es gibt Aufrufe, die symbolische Links und Tools wie 'ls' identifizieren können. Das 'md5deep'-Tool hat sich offensichtlich nicht gestört, wahrscheinlich weil niemand daran interessiert ist. –

+0

Der gleiche Grund, dass 'cat test' und' cat test_symlink' die gleiche Ausgabe ausgeben. – Barmar

Antwort

1

Ein symbolischer Link ist transparent für fast alle Dateisystemoperationen; Das ist der Sinn. Wenn Sie einen Symlink open, öffnet es tatsächlich die Zieldatei, und es ist der Inhalt der Zieldatei, die MD5 bekommen. Nur readlink und lstat (und die viel seltener verwendeten lchown, lutimes und open(..., O_PATH|O_NOFOLLOW)) sind in der Lage, einen Symlink zu sehen, anstatt die Datei dahinter.

+0

Ich sah die MD5s tatsächlich gleich. Eigentlich hätte ich feststellen müssen, dass das Tool die Art eines Symlinks nicht berücksichtigt, weil es die Zieldatei löscht, und versucht, das MD5 auf dem defekten Link zu berechnen, ergibt sich "md5sum: test_symlink: Keine solche Datei oder Verzeichnis". Danke für die Erklärung. – Adonis

Verwandte Themen