SommerCampus 2006 :: Linux/Unix system programming
Home | University | GNU/Linux | Projects | Impressum |
- Safe Strings project
- Generate Background project
- PHP Class EasyTemplate
- PHP Class SqlQuery
- AOF-DB Project
- AOF-GUI Project
- SommerCampus 2006 :: CStrings
- SommerCampus 2006 :: Linux/Unix system programming
Die Welt der Systemprogrammierung unter Unix ist sehr groß und kann sehr komplex werden. Für Anfänger oder nicht erfahrene Benutzer kann es deshalb schwierig werden, in die Systemprogrammierung einzusteigen, und manchmal ist es notwendig systemnah zu programmieren oder man will einfach mehr über das System lernen.
Dieser Kurs wird sich mit der Programmiersprache C befassen, da die meiste Systemprogrammierung unter Unix auf C basiert und die Systemfunktionen in C geschrieben sind (das heißt aber nicht, dass man C++ nicht benutzen kann).
Tag 01
Tag 02
Tag 03
Tag 04
SommerCampus CRON Projekt sc-cron
Download:
sc-cron-0.0.1.tar.gz [146K] (Diese
Version ist ungepatch und enthält eine absichtliche Sicherheitslücke)
sc-cron-0.0.2.tar.gz [146K]
save-exec.patch
Vorwort
Dieses Projekt soll als Beispiel für die Anwendungen der Kentnisse dienen, die während des Kurses vermittelt wurden. Deswgen ist dieser Mini Cron Server nicht besonder leistungsfähig, was das Parsen von Crontabs anbetrifft. Aber wenn man den Code durchliest, vermittelt er vielleicht gute Erkentnisse, wie man an die Unix Systemprogrammierung herangeht, insbesondere auf die Behandlung von fork Prozessen und die Vermeidung von Zombie-Prozessen, Syslog Meldungen und das Empfangen und Versenden von Signalen.
ACHTUNG!!!
Benutze diesen Mini Cron Server nur zu Testzwecken, du darfst ihn NIEMALS so ohne Patches in einer Produktiv Maschine einsetzen, wo mehrere Benutzer Zugriff haben! Denn sc-crontab stellt ein Backdoor für Cracker dar, mit dem man sehr schnell an Root Rechten kommen kann.
Dieses Backdoor wurde absichtlich von mir eingerichtet, damit man als Programmierer sehen kann, wie gefährlich eine Datei mit Besitzer root und mit gesetztem setuid-Bit sein kann, und dass man sehr vorsichtig sein muss, wenn die Binary das gesetzte setuid-Bit braucht. Diese Lücke ist in der Version 0.0.1 enthalten; die Version 0.0.2 hat diese Lücke beseitigt, es wäre also auch gut, wenn man beide Versionen vergleicht!
Es liegt nun an dir die Quelle des Fehlers (Fehler in Makefile.am und sc-crontab.c) zu erkennen und diesen zu beheben, es gibt mehrere Möglichkeiten diesen Fehler los zu werden. Denk drüber nach. Vielleicht kommst du selber drauf, wenn du dir folgendes exploit anschaust:
Exploit
Installation
Installation
Dienst starten (als root)
Benutzer dürfen sc-crontab aufrufen und nur ihre eigene Cron Jobs eintragen und löschen. Nur root darf Cron Jobs von andere Benutzern editieren/löschen. Angenommen, ich woll folgendes als supertux einfügen:
Cron jobs hinzufügen
Einige Minuten später
Und wenn man den Dienst beenden will
Dienst stop (als root)