* Ekkard Gerlach schrieb am 28.Feb.2002:
* Bernd Brodesser schrieb:
owner = gerlach: ^^^^^^^^^^^^^^^ rex:~ # cat /tmp/pwd gerlach (Ausgabe von whoami) ----- uid=500(gerlach) gid=100(users) (Ausgabe von id)
Mehr gibt id nicht aus? Staun.
Ich glaube, da kannst Du auch noch dazulernen, Bernd!
Nun ja, ich habe dazugelernt, daß procmail den Owner verändert. Ein Skript kann das nicht. Das geht letztendlich nur mit dem Systemaufruf setuid oder mit dem SUID-Bit, letzteres aber nicht bei einem Skript. Folglich macht procmail ein setuid.
Natürlich nicht. Ein Skript beachtet nicht das SUID-Bit, und läuft daher *nicht* unter dem Namen des Besitzers, es sei den, derjenige, der es ausführt ist zufällig im ihm identisch.
offensichtlich läuft das Skript DOCH unter dem Namen des Skript-owners!
Das macht aber nicht der Kernel, sondern procmail
Mit ist eingefallen, daß procmail sich beim Aufruf von "sendmail -q -v" vom root in Bewegung setzt. Also ruft wohl root procmail auf. Oder???
Muß schon root sein, sonst führt setuid nicht zum Erfolg.
Also läuft procmail als user root! Widerspruch zu Ausgabe von ID und whoami. WER KANN HIER WEITERHELFEN ????
Wo machst Du whoami? Offensichtlich führt procmail Unterprozesse als ein anderer User aus. Das kann es aber nur, wenn es root ist. Genauer, es macht ein fork, und wenn beim fork eine 0 zurückgegeben wird, es sich also um das Kind handelt, dann wird zuerst ein setuid und ähnliche ausgeführt, dann erst ein exec.. Mach doch mal ein ps. Wer wird dann als Owner ausgegeben?
Kann natürlich auch ganz fieß da irgendetwas fest einprogrammiert sein, kann aber nur funktionieren, wenn es als root läuft. Da aber kein SUID gesetzt ist und Du es nicht als root aufrufst kann es auch
... es ist wohl DOCH root der Initiator. Wo bitte programmiert da Suse in ihrer Distri etwas ganz "fieß" ein?
Was hat SuSE damit zu tun? Die habe es nur auf der CD gepackt. Wie habe ich oben beschrieben. Das haben die Programmierer von procmail gemacht.
das nicht sein. Wäre aber auch sehr ungewöhnlich, sowas macht eigentlich nur init.
Offensichtlich doch nicht.
Gut, wenn von root der Start von Procmail ausgeht, dann müßte das Skript, das von procmail aus aufgerufen wird, auch unter root-Rechten laufen. Das ist aber tatsächlich nicht so. ID und whoami nennen klar den Owner des Skriptes und nicht root.
procmail setzt es halt anders.
Habe in mein Skript eine Schleife eingebaut, um das Skript lange mit sich selber zu beschäftigen:
for j in `seq 1 20000`; do time=`/bin/date '+%H%M'` done
warum machst Du nicht einfach ein sleep?
.. und prompt bekommen ich über top den owner heraus:
3108 gerlach 9 0 1772 1772 892 S 3.1 0.6 0:00 sss_fetch
und was sagt top zu procmail? Wenn was anderes als root, würde es mir stark wundern.
Eigentlich interessiert mich allgemein, unter welchem User das von procmail gestartet Skript nu wirklich läuft. Diese try-and-error erinnert mich zu sehr an M$. Ich werde langsam sauer ...
Schau Dir die Quellen von procmail an.
Woher weiß sudo dann, daß er die Superuserrechte, die nur gerlach an isdnctrl hat, benutzen darf? Davon, daß gerlach der owner des Skriptes ist?
Nein, weil es so im /etc/sudoers eingetragen hast. Vielleicht hast Du auch ALL eingetragen Ja und der User darf dann alle Superuserbefehle mit einem sudo davor ausführen. Nein! getestet:
gerlach@rex:$ sudo /sbin/fdisk Sorry, user gerlach is not allowed to execute '/sbin/fdisk' as root on rex.
Erst wenn in sudoers steht: gerlach ALL=(ALL) NOPASSWD: /sbin/fdisk dann darf user gerlach fdisk benutzen. ALL ist *KEIN* Freibrief für alle root-Kommandos.
ALL hat an verschiedenen Stellen verschiedene Bedeutungen. Bei Dir heist das erste ALL, daß der User gerlach zu allen User werden darf. Du dürftest auch sudo -u egerl /sbin/fdisk ausführen. Nun gut, mit fdisk geht dies natürlich nicht. Das ALL in Klammern sagt nur, daß Du es von jeder Maschiene aus machen darfst. Wenn anstelle von /sbin/fdisk ALL stehen würde, dann dürftest Du jeden Befehl ausführen. Ich hoffe, das war jetzt richtig. sudo benutze ich nicht mehr.
Hat nichts damit zu tun, wem die Datei gehört. Wem eine Datei gehört ist irrelevant, außer das SUID-Bit ist gesetzt und für wem welche Rechte zählen, aber wenn so wie so alle ausführen dürfen, ist es für die Ausführung irrelevant. Es wird immer mit der UID dessen ausgeführt, der es aufruft. Besser gesagt des Prozesses, der aufruft.
Diese Aussage stimmt bisher nicht. Vielleicht auch weil *doch* root der Initiator ist. Da wüßte ich gerne wie das funktioniert, dafür würde ich gerne mal ein Tutorial, HowTo, .. lesen. Aber scheinbar gibt es so etwas nicht.
man 2 setuid Bernd -- ACK = ACKnowledge = Zustimmung | NAC = No ACknowledge = keine Zustimmung DAU = Dümmster Anzunehmender User | LOL = Laughing Out Loud = Lautes Lachen IIRC = If I Remember Correctly = Falls ich mich richtig erinnere OT = Off Topic = Am Thema (der Liste) vorbei |Zufallssignatur 11