Ho uno script Python che voglio essere in grado di essere eseguito come utente del sistema guybrush
con UID 200 e gruppo guybrush
con GID 200.setuid/setgid involucro per script Python
Al momento il mio script Python (situato in /path/to/script.py
) si presenta così:
#!/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()
mio C involucro tentato (scriptwrap.c
) si presenta così:
#include <unistd.h>
#include <sys/types.h>
int main(int argc, char *argv[]) {
setuid(geteuid());
setgid(getegid());
return execv("/path/to/script.py", argv);
}
I ° en compilare, chown e chmod l'involucro come segue:
$ gcc scriptwrap.c -o scriptwrap
$ chown guybrush:guybrush scriptwrap
$ chmod 6755 scriptwrap
Eppure, quando corro scriptwrap, ottengo il seguente output:
uid: 1000
euid: 1000
gid: 200
egid: 200
Così, per qualche motivo solo il GID viene impostato (il mio l'UID normale è 1000). Cosa posso fare per risolvere questo problema?
Edit: Se io chown lo script per root:root
ed eseguirlo, l'UID, euid, GID, e egid sono tutti impostati a 0.
Inoltre, questo è su Ubuntu 12.04.4 LTS.