[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Wie geht setuid für bash script?



Marcus Obst <marcus.obst@etit.tu-chemnitz.de> wrote:
> On Sunday 20 September 2009 13:24:52 Matthias Meyer wrote:

>> Ich möchte aus einem PHP Programm ein bash script aufrufen.  Die
>> Herausforderung für mich ist das dieses bash script als ein anderer
>> User laufen soll als der Apache, in dem ja das PHP läuft.

> wie du bereits gemerkt hast, funktioniert der SETUID-Mechanismus bei
> Shell-Skripten unter Unix nicht, wie du vielleicht erwartest.

> (Die Begründung, die ich dafür kenne, hat wohl damit zu tun, dass man
> davon ausgeht, dass es relativ schwer ist, ein ,,sicheres''
> Shell-Skript zu schreiben und man sich durch diese Einschränkung davor
> schützt)

Eigentlich hat es damit zu tun, dass ein Race gibt zwischen dem Start
der Shell (als root) und dem Start des Scriptes durch die Shell. Es wäre
möglich, das Script in dieser Zeit durch ein anderes zu ersetzen.

Die Lösung, so wie sie andere OSe praktizieren, wäre, dass man der Shell
nicht den Pfad des Scripts übergibt, sondern dass der Kernel den
File-Descriptor schon öffnet und dann dies der Shell übergibt. Dann hat
ein Angreifer keine Chance mehr, das Script "hintenherum" zu tauschen.

Warum man dies in Linux noch nicht umgesetzt hat (oder vielleicht hat
man es doch? und beläßt es aus Kompatibilitäts-Gründen so, wie es ist),
weiß ich nicht.

S°

-- 
Sig lost. Core dumped.


Reply to: