Hallo Jürgen, hallo Leute, die technische Seite wurde ja schon ausführlich behandelt. Kommen wir jetzt zum Thema Sicherheit ;-) Am Samstag, 16. September 2006 15:35 schrieb Juergen Langowski:
Wie kann man so etwas regelkonform, unter Sicherheitsaspekten einwandfrei UND effizient erledigen?
Wenn der Benutzer im Verzeichnis Schreibrechte hat, wird es lustig ;-) Kleines Beispiel zur Abschreckung: # ls -l foo bar lrwxrwxrwx 1 cb users 3 2006-09-16 18:22 bar -> foo -rw-r--r-- 1 cb users 0 2006-09-16 18:22 foo # cp irgendwas bar # ls -l foo bar lrwxrwxrwx 1 cb users 3 2006-09-16 18:22 bar -> foo -rw-r--r-- 1 cb users 1923 2006-09-16 18:23 foo Sprich: Durch Setzen eines passenden Symlinks lassen sich Dateien überschreiben. Wenn das Script als Root läuft, auch die Dateien anderer User oder Systemdateien. (klassische "Symlink attack") Wenn Du jetzt spontan an "vorher löschen" denkst, vergiss es bitte gleich wieder. Die Situation hat sich zwar dahingehend verbessert, dass Du aus einem permanenten Problem eine race condition gemacht hast - aber es könnte immer noch jemand zwischen Löschen und Kopieren einen neuen Symlink anlegen. Die Lösung ist, das Kopieren als User laufen zu lassen - wenn dann ein User einen bösen Symlink auf fremde Dateien setzt, kommt schlicht "permission denied". Da Dein Script ja schon als root läuft: su username -c "cp /pfad/zur/datei /da/hin" chown, ein weiteres potenzielles Sicherheitsrisiko, ist logischerweise überflüssig, weil der User keine Dateien mit Besitzer root anlegen kann ;-) Bezüglich Usernamen und Homeverzeichnissen würde ich folgendes empfehlen ("grep /home/hostings/" nach Bedarf anpassen): getent passwd | grep /home/hostings/ | { IFS=: read user x x x x homedir x ; su "$user" -c "cp /pfad/zur/datei $homedir/da/hin" } Warum die geschweiften Klammern nötig sind, kannst Du auf www.cboltz.de/de/linux/bash/sl nachlesen ;-) Gruß Christian Boltz --
Das dich das überrascht, überrascht mich jetzt aber :-) Das überrascht mich aber durchaus. Überraschend. [>> René Falk, > Ratti und Arno Lehmann in suse-linux]
Gruß Christian Boltz -- Failure is not an option. It comes bundled with your Microsoft product.