Perlscript mit Rootrechten
Erik Heinz
erik at iks-jena.de
Die Mar 7 09:25:47 CET 2000
On Mon, Mar 06, 2000 at 06:09:33PM +0100, Nils Juenemann wrote:
> Ich moechte ein Perlscript auf einem Apache mit Rootrechten
> laufen lassen.
[...]
> Gibt es ein "sudo" fuer den Apache ? Oder wie kann ich das
> Problem loesen ?
Mit sudo oder einem selbstgeschriebenen, auf setuid root gesetzten
C-Programm als Wrapper. Unten angehängtes Beispielprogramm zum Beispiel
startet, wenn man es "programm" oder "programm.cgi" nennt, ein Script mit
dem Namen "programm.pl" als root.
----------------------------8<------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <syslog.h>
#define UID 15
#define PROGLEN 64
void error(char * s, char *argv[]) {
openlog(argv[0], LOG_PID, LOG_DAEMON);
syslog(LOG_ERR, s, argv[0]);
fprintf(stderr, "Sicherheitsverletzung. Abbruch.\n");
closelog();
exit(-1);
}
int main(int argc, char *argv[])
{
char prog[PROGLEN], *p1;
if (getuid() != UID) error("%s: Wrong UID\n", argv);
if (setregid(0,0) != 0) error("%s: Warning, cannot set GID\n", argv);
if (setreuid(0,0) != 0) error("%s: Warning, cannot set UID\n", argv);
strncpy(prog, argv[0], PROGLEN-1);
if ((p1 = strstr(prog, ".cgi")) != NULL) *p1 = '\0';
strcat(prog, ".pl");
execl(prog, prog, NULL);
}
----------------------------8<------------------------------------------------
--
| Erik Heinz, IKS GmbH Jena * erik at iks-jena.de * privat: erik at jena.thur.de |
+---------------------------------------------------------------------------+