ich ein Python-Skript, das ich wünsche der Lage sein, als Systembenutzer ausgeführt werden guybrush
mit UID 200 und Gruppe guybrush
mit GID 200setuid/setgid-Wrapper für Python-Skript
Im Moment mein Python-Skript (befindet sich in /path/to/script.py
) sieht wie folgt aus:
#!/usr/bin/env python2
import os
print "uid: %s" % os.getuid()
print "euid: %s" % os.getgid()
print "gid: %s" % os.geteuid()
print "egid: %s" % os.getegid()
Mein Versuch C-Wrapper (scriptwrap.c
) sieht wie folgt aus:
#include <unistd.h>
#include <sys/types.h>
int main(int argc, char *argv[]) {
setuid(geteuid());
setgid(getegid());
return execv("/path/to/script.py", argv);
}
Ith en kompilieren, chown und chmod den Wrapper wie folgt:
$ gcc scriptwrap.c -o scriptwrap
$ chown guybrush:guybrush scriptwrap
$ chmod 6755 scriptwrap
Doch wenn ich scriptwrap laufen lasse, erhalte ich die folgende Ausgabe:
uid: 1000
euid: 1000
gid: 200
egid: 200
aus irgendeinem Grund also nur die GID gesetzt wird (meine normale UID ist 1000). Was kann ich tun, um das zu beheben?
Edit: Wenn ich das Skript root:root
chown und führen Sie es, die UID, EUID, GID und Egid sind alle auf 0 gesetzt
Auch dieses ist auf Ubuntu 12.04.4 LTS.