Thread flock funktioniert nicht (64 answers)
Opened by x-man at 2006-04-17 19:11

sid burn
 2006-04-22 23:23
#7392 #7392
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=pq,22.April.2006, 21:11]wenn zwei prozesse flock() benutzen, gibt es kein problem. wenn ein
anderer prozess kein flock() benutzt, ist das natürlich ein problem,
da flock() eben nur einen advisory lock setzt, nicht mandatory.
im CGI-skript des OP reicht es also völlig aus, open()+flock()
zu benutzen. wozu gäbe es die funktion denn, wenn sie völlig unnütz wäre?
um hier im forum für diskussionsstoff zu sorgen?[/quote]
Wofür gibt es den sysopen wenn die Verwendung von open und danach flock das gleiche sein würde?
Open gibt es hauptsächlich da sie einfacher ist, und man eben schnell Skripte schreiben kann. Dafür wurde ja Perl nunmal entwickelt. Ein sysopen ist sicherer, und es gibt sie wenn man halt sicherer Programmieren möchte. Das heißt ja nicht das die eine oder die andere Funktion deswegen unbrauchbar wird.

Das Problem sofern ich mich erinnere lag folgendermaßen:
1. Überprüfung auf Symlink, wenn nein dann
2. Datei öffnen mit >
3. Datei flocken
4. Inhalt schreiben

Das Problem daran:
1. Datei wurde auf Symlink überprüft, alles ist okay.
P1: Ein anderer Prozess macht aus der Datei jetzt ein Symlink auf /boot/vmlinuz
2. Datei wird mit > geöffnet. Mitlerweile ist die Datei jedoch eine Symlink datei auf den Linux Kernel
P1: Hier bin ich mir nicht 100%ig sicher. Da die Datei aber noch nicht geflockt ist, dürfte es hier genauso Möglich sein das ein anderer Prozess aus der Datei ein Symlink auf /boot/vmlinuz zu erzeugt.
3. Datei wird geflockt. Also Linux Kernel wird geflockt.
4. Inhalt wird geschrieben. Da ">" benutzt wird, löschen wir den Linux Kernel.
5. Viel Spaß beim nächsten Reboot.


Mit sysopen würde das nicht passieren. Da man gleichzeitig z.B. auf symlink, datei öffnen, und flocken kann.


Genau darin lag auch das Problem von ridentd.pl. Es wurde auch praktisch gezeigt das man das verhalten so wie ich beschrieben habe, durchaus ausnutzen kann.\n\n

<!--EDIT|sid burn|1145734557-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread flock funktioniert nicht