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

Re: Wie geht setuid für bash script?



On Sunday 20 September 2009 15:25:38 Sven Hartge wrote:
> > (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.

Hm, das leuchtet mir jetzt nicht ganz ein.  Wenn die File-Permissions 
richtig gesetzt sind, kann auch niemand (außer root) das Skript 
austauschen.

Außerdem funktioniert ein SETUID-Skript mit Perl ja auch.  Ohne es jetzt 
explizit nachzuprüfen, denke ICH, dass der Kern beim Ausführen eines 
Skriptes (egal ob Perl, Shell, oder was auch immer, das weiß der Kern 
gar nicht) bei der Shebang-Evaluierung (#! im Skriptkopf) nichts 
besonders macht.

Insofern halte ich SETUID-Skripte für ein Feature des Interpreters, 
nicht des Betriebsystems...

Test;

Wenn man das bash Binary (/bin/bash) mal mit dem SETUID-Bit versieht und 
dann als normaler Nutzer ein Shell-Skript ausführt (#! /bin/bash -p) 
sieht man, dass die EUID auf 0 steht (ist eigentlich auch logisch)

Genauso verhält es sich  auch mit perl-suid, nur dass da schon per 
Default das SETUID-Bit gesetzt ist.
 
 Viele Grüße!
 Marcus


Reply to: