← Back to team overview

sslug-teknik team mailing list archive

Re: Køre script med uid=0 fra Apache

 

On Sun, 26 Dec 1999, Carsten Svaneborg wrote:

> Ulrik Buchholtz wrote:
> > hvordan kan jeg nemmest køre et script som root fra apache.
> 
> chmod ug+s script
> hvis det er eget af user/group root. Så vil apache udføre det med
> root access.

Det er ikke så enkelt -- kun hvis det er et binært program. Og det er ikke
Apache der gør noget, men kernen.

Linux understøtter ikke SUID-scripts. Dog understøtter Perl fx SUID
scripts self: hvis man sætter SUID på et .pl script udføres denne med
programmet suidperl hvis det er installeret og er sat til at være SUID
root.

SUID-perl scripts kører automatisk med "taint" som gør det lidt sværere at
skrive dumme SUID programmer (fx få input fra brugeren og bagefter udfører
uden videre noget i stil med: system("echo $navn har været her >>
logfil").

Jeg har brugt Perl SUID scripts i netop denne forbindelse -- et
webinterface til administration af en maskine, oprettelse af brugere osv.
og det virkede OK.

Hvis det er et shell/python/andet ikke-perl script det drejer sig om kan
du laver en "wrapper" der starter programmet op som SUID. Wrapperet er et
almindeligt C-program og kan altså være SUID og det eneste den gør er at
starte programmet:

#include <stdio.h>
int main(int argc, char **argv) {
	return execv("/sti/til/dit/script", argv);
}

Det program kompileres så og gemmes som dit program.cgi og kaldes fra
Apache. Det sættes SUID og kalder så dit script som arver denne
SUID-lighed.



-- 
==============================================================================
Erwin Andreasen   Herlev, Denmark <erw@xxxxxx>          UNIX System Programmer
<URL:http://www.andreasen.org>              <*>         (not speaking for) DDE
==============================================================================



Follow ups

References