goeb hat geschrieben:
linuxCowboy hat geschrieben:
Code: Alles auswählen
~# cat /tmp/testfile
cat: /tmp/testfile: Keine Berechtigung
Sollte
root nicht immer Zugriff haben?!
In dem Fall eben nicht, sonst wäre die Änderung sinnlos. Nochmal: das gilt nur wenn für das Verzeichnis das Sticky-Bit gesetzt ist und Link-Owner und Ziel-Owner nicht übereinstimmen. Und das muß wie gesagt nicht für alle Systeme gelten, unter Wheezy ist es aber so.
Na das ist ja ein toller Trick! Unter Squeeze ist es nicht so. Und bei der LPI-Prüfung brauch man mit sowas auch nicht kommen (denke ich!)
Der Sache sollte man weiter auf den Grund gehen...
(ich kann mir etwas auf meinem System nicht anschauen...
)
goeb hat geschrieben:Was meinst du jetzt mit überschreiben? Den Inhalt des Ziels ändern oder den Link ändern?
Wenn
root einen eigenen Link im /tmp erstellen will. Gibts den schon, kommt ein Fehler.
Ansonsten hat
root überall Zugriff. Ihn stört auch kein sticky-bit.
Und eben darum, wenn ich nur schreibe, als root, schreibe ich wohin der Link zeigt. Ohne Fehler!
Und für den Inhalt der Zieldatei gilt: wenn der Benutzer dafür keine Schreibrechte hat kann er ihn sowieso nicht ändern, egal wem der Link gehört.
Das gilt eben nicht für
root! s.o.
War mein Beispiel oben so schwer zu verstehen? root (oder im Beispiel user1) will keinen Link benutzen, er will irgendetwas in eine normale Datei schreiben (echo 'something' >$tmpfile). Und selbst wenn du vorher prüfst ob die Datei (oder ein Link mit dem Namen) nicht existiert hast du noch eine Race Condition weil der Angreifer zwischen Test und Schreibvorgang den Link anlegen kann.
Richtig. Ich hatte mir den Thread nochmal angesehen und nachgedacht, und dann meinen Post geändert.
Allerdings das mit dem TOCTTOU-Angriff (time-of-check-to-time-of-use) halte ich für eher theoretisch.
Cae erstellt seine tausenden temp.??-Files irgendwann vorher!