Frage:
Ein Script, welches eine Datei erstellt, erstellt diese Datei mit folgenden Rechten und Besitzern:
.rw.r…r…
owner root
group root
Das Script wird mit #!/bin/bash ausgeführt.
Hintergrund:
Das Script hat die Rechte .rwxrwxr… und gehört UserA in Gruppe Users. Es wird von cron gestartet, der cron-job wurde von UserA erstellt. Die Datei wird durch Ausgabeumleitung der Art „cp xx yy >>result.log“ erstellt, eventuelle Fehlermeldungen gehen (richtigerweise) per Mail an UserA.
Was muss ich tun, damit die erstellte Datei anschließend die gewünschten Rechte besitzt:
.rw.r…
owner UserA
group Users
Etwa nach Beenden des Scripts chown und chmod aufrufen?
Da gibt’s bestimmt was besseres…
Woher nimmt Linux eigentlich in diesem Fall die Info, die Rechte und Besitzansprüche auf root/root .rw.r…r… zu setzen?
probier doch mal den builtin befehl der bash
umask = Setzen undoder anzeigen der Dateikreierungsmaske
( klasse wort was ? )
Hilfe solltes du in man bash finden
Dank erstmal, Martin. Nun kann ich den Fehler schon mal besser eingrenzen.
Irgendow muss dieses Script (hoffentlich) ein suid Root binary
aufrufen…
das bedeutet?? Eine ausführbare Datei, z.B. ELF?
Das Script arbeitet cp, mkdir und rm Befehle ab, welche ja ELF Programme sind.
Sind das suid root binarys? Die darf doch auch ein normaler User ausführen (rwxr-xr-x)
Ansonsten kannst Du es benutzen, um eine suid root shell zu
erzeugen und damit Deine Systemsicherheit voellig zu
unterlaufen.
Daran hatte ich schon gedacht, auch wenn mir der Unterschied einer root shell zur suid root shell nicht ganz klar ist (so es einen gibt)
Normalerweise sollte ein cron Script, das von UserA (ungleich
root) getsartet wird nur Files erzeugen duerfen, die UserA
gehoeren…
Normalerweise ja, alles andere ist zumindest unlogisch.
ABER evtl. hängt das damit zusammen, das ich einen symbolischen Link in das Verzeichnis /usr/bin gelegt habe. Das kann ich nur als root. Der Link selber wird mir mit lrwxrwxrwx angezeigt, root/root. Ein Ändern der Rechte+Besitzer ist nicht möglich bzw. ändert die Rechte des Scriptes, welche ja OK sind.
Ist das der Haken???
Wo legt man denn als normaler UserA sinnvollerweise Links auf eigene Scripte ab?
(Da ich das Script öfter mal umschreiben muss, liegt es in einem dir, welches im tägl. Backup enthalten ist)
Irgendow muss dieses Script (hoffentlich) ein suid Root binary
aufrufen…
das bedeutet?? Eine ausführbare Datei, z.B. ELF?
Das Script arbeitet cp, mkdir und rm Befehle ab, welche ja ELF
Programme sind.
genau, die genannten befehle sind aber iirc nicht suid root
Sind das suid root binarys? Die darf doch auch ein normaler
User ausführen (rwxr-xr-x)
eher nicht, sollten sie zumindest nicht sein.
Ansonsten kannst Du es benutzen, um eine suid root shell zu
erzeugen und damit Deine Systemsicherheit voellig zu
unterlaufen.
Daran hatte ich schon gedacht, auch wenn mir der Unterschied
einer root shell zur suid root shell nicht ganz klar ist (so
es einen gibt)
noe, das waere ne ganz ordinaere rootshell, vie spass beim kaputtmachen…
ABER evtl. hängt das damit zusammen, das ich einen
symbolischen Link in das Verzeichnis /usr/bin gelegt habe. Das
kann ich nur als root. Der Link selber wird mir mit lrwxrwxrwx
angezeigt, root/root. Ein Ändern der Rechte+Besitzer ist nicht
möglich bzw. ändert die Rechte des Scriptes, welche ja OK
sind.
Ist das der Haken???
ja, das sorgt wohl fuer root. aber man kann durchaus den owner eines symlinks aendern, die rechte nicht, chmod greift immer auf das ziel durch (siehe manpage…).
oh oh, schwerer faultpas
… meinerseits. Betriebsblindheit oder Alzheimer.
Ursache des Fehlers waren Fehler. Ei verflixt. Ich hatte die Testläufe aufgrund einiger Fehlschläge als root gestartet, daher die root Rechte. Und das Script hat ein Verzeichnis angelegt, ebenfalls für root. Da kann es ja als UserA nicht klappen mit dem Anlegen von Files.
Hatte vor lauter Debugging vergessen, das ich root bin.
Dein Tip war der Anlaß, mich mal wieder als UserA einzuloggen und zu testen.
…/ aber man kann durchaus den owner
eines symlinks aendern, die rechte nicht, chmod greift immer
auf das ziel durch (siehe manpage…).
also einfach owner des links richtig setzen.
Danke für den Tip, so hat es dann geklappt. Der mc hat die Änderung der Besitzer-Rechte auch immer durchgereicht. An der Konsole ging es auf’n Ruck. Ergo, verlass Dich nie auf andere (mc) )