Endlosreferenz als Verzeichnisanomalie
*Markus
- sonstiges
0 King^Lully0 *Markus
0 Axel Richter0 *Markus0 Axel Richter0 *Markus
0 Mathias Brodala0 dedlfix
Hallo,
gestern passierte mir etwas ganz Eigenartiges. Ich wollte ein Backup meiner lokalen Serverdaten machen, indem ich sie auf meinen Webspace hochgeladen hätte. Dabei werkte mein FTP-Programm so seltsam rum und die Auslastung schoss auf 100%, wodurch ich das Programm mit killall -9 nur mehr abschießen konnte.
Danach sah ich mir die hochzuladenden Daten an, und bemerkte, dass das Verzeichnis htdocs in meinem htdocs-Verzeichnis meines Apache, das ich hochladen wollte, nochmals exisitert. Ich dachte zuerst, dass es vll. ein leeres Verzeichnis sein würde, undich es mal versehentlich angelegt hätte, aber als ich in das Verzeichnis hinein sah, waren darin wieder alle Daten, die das Haupt-htdocs-Verzeichnis beinhaltete. Darin befand sich wieder ein htdocs-Verzeichnis...usw.
Zuerst dachte ich, dass ich meinen Augen nicht traue, und ich nur falsch die Verzeichnisse gewechselt hätte, aber es war tatsächlich so. Offensichtlich wurde daraufhin der Hochladeprozess in eine Endlosschleife verstrickt und noch dazu landete ich aus Sicherheitsgründen durch diese Endlosschleife auf einer automatischen Blackliste meines Providers. Durch eine kurze Erklärung wurde meine IP übrigens wieder von der Blacklist entfernt.
Bei diesem Endlos-Verzeichnis handelte es definitiv nicht um einen symbolischen Link, sondern wirklich um ein Verzeichnis. Ich habe es extra mit "file htdocs" überprüft, da ich ja nicht glaubte, was ich hier sah.
Nach diesem Vorfall löschte ich mal das innere htdocs-Verzeichnis und plötzlich war das übergeordnete Hauptverzeichnis auch leer. Es muss also definitiv das selbe Verzeichnis gewesen sein, aber wie ist das möglich und vor allem, wie entand dies, denn ich wüsste nicht, wie ich so ein Kunststück erschaffen hätte können?
Markus
gestern passierte mir etwas ganz Eigenartiges. Ich wollte ein Backup meiner lokalen Serverdaten machen, indem ich sie auf meinen Webspace hochgeladen hätte. Dabei werkte mein FTP-Programm so seltsam rum und die Auslastung schoss auf 100%, wodurch ich das Programm mit killall -9 nur mehr abschießen konnte.
Danach sah ich mir die hochzuladenden Daten an, und bemerkte, dass das Verzeichnis htdocs in meinem htdocs-Verzeichnis meines Apache, das ich hochladen wollte, nochmals exisitert.
Warum sollte ja wohl klar sein, das FTP-Tool muss u.a. wegen der Aktualisierung vorhandener Dateien eine "Transaktion bauen", also eine temporäre Datenbasis aufbauen und irgendwann umschalten. Da dieser Prozess gestoppt worden ist, hast Du Datenvermehrung.
Manche FTP-Tools sind nicht so schlau und arbeiten ohne "Transaktionen", d.h. da verschwinden dann schon mal files. LOL
Hallo,
Manche FTP-Tools sind nicht so schlau und arbeiten ohne "Transaktionen", d.h. da verschwinden dann schon mal files. LOL
Nun, beim Löschen des inneren Verzeichnisses sind die äußeren Daten ebenfalls verschwunden, also kommt es im Endeffekt auf das gleiche raus.
Markus
Hallo,
Nach diesem Vorfall löschte ich mal das innere htdocs-Verzeichnis und plötzlich war das übergeordnete Hauptverzeichnis auch leer. Es muss also definitiv das selbe Verzeichnis gewesen sein, aber wie ist das möglich und vor allem, wie entand dies, denn ich wüsste nicht, wie ich so ein Kunststück erschaffen hätte können?
Da war ein symbolischer Link zu Deinem htdocs in Deinem htdocs Verzeichnis.
zum Probieren:
:~# mkdir test
:~# cd test
:~/test# mkdir htdocs
:~/test# cd htdocs
:~/test/htdocs# touch file1
:~/test/htdocs# touch file2
:~/test/htdocs# touch file3
:~/test/htdocs# ls -i
1933452 file1 1933453 file2 1933454 file3
:~/test/htdocs# ln -s . htdocs
:~/test/htdocs# ls -i
1933452 file1 1933453 file2 1933454 file3 1933455 htdocs
:~/test/htdocs# cd htdocs
:~/test/htdocs/htdocs# cd htdocs
:~/test/htdocs/htdocs/htdocs# ls -i
1933452 file1 1933453 file2 1933454 file3 1933455 htdocs
:~/test/htdocs/htdocs/htdocs# rm *
:~/test/htdocs/htdocs/htdocs# ls -i
:~/test/htdocs/htdocs/htdocs# cd ..
:~/test#
alles klar?
viele Grüße
Axel
Hallo,
du hast recht. Es ist tatsächlich ein symbolischer Link. Es zeigt mir nämlich "directory" bei "$ file htdocs" an, obwohl ich einen symbolischen Link setzte. Ich dachte, es würde mir einen Hinweis auf einen symbolischen Link geben, weswegen ich letztendlich auch so verblüfft war.
Markus
Hallo,
du hast recht. Es ist tatsächlich ein symbolischer Link. Es zeigt mir nämlich "directory" bei "$ file htdocs" an, obwohl ich einen symbolischen Link setzte. Ich dachte, es würde mir einen Hinweis auf einen symbolischen Link geben, weswegen ich letztendlich auch so verblüfft war.
Huch! Das hatte ich in Deinem Ausgangsposting ganz überlesen. Das ist wirklich seltsam. Bist Du sicher, dass Du "file htdocs" von _innerhalb_ des Verzeichnisses htdocs aufrufst, mit dem "htdocs" also wirklich den Link ansprichst? Bei mir sieht das dann so aus:
:~/test/htdocs# file htdocs
htdocs: symbolic link to `.'
viele Grüße
Axel
Hallo,
ok, ich konnte das Phänomen nun nachvollziehen. Offensichtlich macht es einen Unterschied, wenn beim symbolischen Link einmal der Slash zusätzlich angefügt wird und einmal nicht. Dasselbe gilt beim Löschen. Ist ein Slash hinzugefügt, wird alles weggefegt. Siehe selbst:
markus@gentoo ~/test $ mkdir htdocs
markus@gentoo ~/test $ ls
htdocs
markus@gentoo ~/test $ cd htdocs/
markus@gentoo ~/test/htdocs $ touch datei1
markus@gentoo ~/test/htdocs $ touch datei2
markus@gentoo ~/test/htdocs $ ls -al
insgesamt 8
drwxr-xr-x 2 markus users 4096 18. Mär 18:38 .
drwxr-xr-x 3 markus users 4096 18. Mär 18:38 ..
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei1
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei2
markus@gentoo ~/test/htdocs $ ln -s . htdocs
markus@gentoo ~/test/htdocs $ ls -al
insgesamt 8
drwxr-xr-x 2 markus users 4096 18. Mär 18:39 .
drwxr-xr-x 3 markus users 4096 18. Mär 18:38 ..
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei1
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei2
lrwxrwxrwx 1 markus users 1 18. Mär 18:39 htdocs -> .
markus@gentoo ~/test/htdocs $ file htdocs/
htdocs/: directory
markus@gentoo ~/test/htdocs $ file htdocs
htdocs: symbolic link to `.'
markus@gentoo ~/test/htdocs $ cd htdocs
markus@gentoo ~/test/htdocs/htdocs $ ls -al
insgesamt 8
drwxr-xr-x 2 markus users 4096 18. Mär 18:39 .
drwxr-xr-x 3 markus users 4096 18. Mär 18:38 ..
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei1
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei2
lrwxrwxrwx 1 markus users 1 18. Mär 18:39 htdocs -> .
markus@gentoo ~/test/htdocs/htdocs $ cd ..
markus@gentoo ~/test/htdocs $ rm -r htdocs
markus@gentoo ~/test/htdocs $ ls -al
insgesamt 8
drwxr-xr-x 2 markus users 4096 18. Mär 18:39 .
drwxr-xr-x 3 markus users 4096 18. Mär 18:38 ..
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei1
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei2
markus@gentoo ~/test/htdocs $ ln -s . htdocs
markus@gentoo ~/test/htdocs $ ls -al
insgesamt 8
drwxr-xr-x 2 markus users 4096 18. Mär 18:40 .
drwxr-xr-x 3 markus users 4096 18. Mär 18:38 ..
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei1
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei2
lrwxrwxrwx 1 markus users 1 18. Mär 18:40 htdocs -> .
markus@gentoo ~/test/htdocs $ cd htdocs
markus@gentoo ~/test/htdocs/htdocs $ ls -al
insgesamt 8
drwxr-xr-x 2 markus users 4096 18. Mär 18:40 .
drwxr-xr-x 3 markus users 4096 18. Mär 18:38 ..
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei1
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei2
lrwxrwxrwx 1 markus users 1 18. Mär 18:40 htdocs -> .
markus@gentoo ~/test/htdocs/htdocs $ cd htdocs/
markus@gentoo ~/test/htdocs/htdocs/htdocs $ ls -al
insgesamt 8
drwxr-xr-x 2 markus users 4096 18. Mär 18:40 .
drwxr-xr-x 3 markus users 4096 18. Mär 18:38 ..
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei1
-rw-r--r-- 1 markus users 0 18. Mär 18:38 datei2
lrwxrwxrwx 1 markus users 1 18. Mär 18:40 htdocs -> .
markus@gentoo ~/test/htdocs/htdocs/htdocs $ cd ..
markus@gentoo ~/test/htdocs/htdocs $ cd ..
markus@gentoo ~/test/htdocs $ rm -r htdocs/
rm: Entfernen von Verzeichnis »htdocs/« nicht möglich: Datei oder Verzeichnis nicht gefunden
markus@gentoo ~/test/htdocs $ ls -al
insgesamt 8
drwxr-xr-x 2 markus users 4096 18. Mär 18:40 .
drwxr-xr-x 3 markus users 4096 18. Mär 18:38 ..
markus@gentoo ~/test/htdocs $ cd ..
markus@gentoo ~/test $ ls
htdocs
Markus
Hallo *Markus.
Bei diesem Endlos-Verzeichnis handelte es definitiv nicht um einen symbolischen Link, sondern wirklich um ein Verzeichnis.
Vielleicht um einen Hardlink? Wie hoch ist der Linkcounter für das htdocs-Verzeichnis?
Einen schönen Sonntag noch.
Gruß, Mathias
echo $begrüßung;
Bei diesem Endlos-Verzeichnis handelte es definitiv nicht um einen symbolischen Link, sondern wirklich um ein Verzeichnis.
Vielleicht um einen Hardlink? Wie hoch ist der Linkcounter für das htdocs-Verzeichnis?
Als ich eben zum Testen einen Hardlink auf ein Verzeichnis anlegen wollte, wurde mir das von ln verwehrt: ln: „x“: harte Verknüpfung für Verzeichnisse nicht erlaubt
echo "$verabschiedung $name";
Hallo,
Bei diesem Endlos-Verzeichnis handelte es definitiv nicht um einen symbolischen Link, sondern wirklich um ein Verzeichnis.
Vielleicht um einen Hardlink? Wie hoch ist der Linkcounter für das htdocs-Verzeichnis?
Als ich eben zum Testen einen Hardlink auf ein Verzeichnis anlegen wollte, wurde mir das von ln verwehrt: ln: „x“: harte Verknüpfung für Verzeichnisse nicht erlaubt
Naja, das ist ein Schutz des Systems. Im Prinzip ist ein Hardlink ja nur ein weiterer Eintrag im Filesystem mit der selben inode-Nummer, wie der des Ziels. Die Einträge . und .. sind ja auch Hardlinks zu Verzeichnissen. Dieser Hardlink könnte also doch irgendwie "entstanden" sein. Das würde auch erklären, warum file "directory" ausgibt.
viele Grüße
Axel