X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=daemon.c;fp=daemon.c;h=1c74ed3bd639654a738048053fbf20e1a1e51907;hb=f96ceff6aa49cd82a0eebde5aefbdc048292343d;hp=392dccbae8f09e963ce29cbf9a890a8a83f96355;hpb=dc1c24f73dfe8a1e7d92897cb741c52be2a15c4d;p=apps%2Fpfixtools.git diff --git a/daemon.c b/daemon.c index 392dccb..1c74ed3 100644 --- a/daemon.c +++ b/daemon.c @@ -33,8 +33,10 @@ * Copyright © 2007 Pierre Habouzit */ -#include #include +#include +#include +#include #include "common.h" #include "daemon.h" @@ -149,3 +151,28 @@ int daemon_detach(void) setsid(); return 0; } + +int drop_privilegies(const char *user, const char *group) +{ + if (!geteuid()) { + struct passwd *pw; + struct group *gr; + + if (group) { + gr = getgrnam(group); + if (!gr) + return -1; + setgid(gr->gr_gid); + } + + pw = getpwnam(user); + if (!pw) + return -1; + if (!group) { + setgid(pw->pw_gid); + } + setuid(pw->pw_uid); + } + + return 0; +}