Mam skrypt Pythona, że chcę, aby móc być uruchamiane jako użytkownik systemu guybrush
z UID 200 i grupy guybrush
z GID 200.setuid/setgid wrapper dla skryptu Pythona
W tej chwili mój skrypt Pythona (położony w /path/to/script.py
) wygląda następująco:
#!/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()
Moja próba C wrapper (scriptwrap.c
) wygląda następująco:
#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 th pl kompilacji chown i chmod opakowanie następująco:
$ gcc scriptwrap.c -o scriptwrap
$ chown guybrush:guybrush scriptwrap
$ chmod 6755 scriptwrap
Jednak gdy uruchamiam scriptwrap, pojawia się następujący komunikat:
uid: 1000
euid: 1000
gid: 200
egid: 200
więc dla jakiegoś powodu tylko GID jest ustawiony (mój normalny UID to 1000). Co mogę zrobić, aby to naprawić?
Edit: Gdybym chown skrypt root:root
i uruchomić go, UID, euid, GID, a egid są ustawione na 0.
Poza tym jest na Ubuntu 12.04.4 LTS.