From f9cfab1e0d1183eb5e948b6dabc6017b9e261704 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Sun, 16 Aug 2020 22:20:14 -0400 Subject: Only call setgroups as root setgroups fails when already running as a user. --- service.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'service.c') diff --git a/service.c b/service.c index 3178f79..78890b8 100644 --- a/service.c +++ b/service.c @@ -187,8 +187,10 @@ void serviceStart(struct Service *service) { error = setgid(serviceGID); if (error) err(ExitNoExec, "setgid"); - error = setgroups(1, &serviceGID); - if (error) err(ExitNoExec, "setgroups"); + if (!getuid()) { + error = setgroups(1, &serviceGID); + if (error) err(ExitNoExec, "setgroups"); + } error = setuid(serviceUID); if (error) err(ExitNoExec, "setuid"); -- cgit 1.4.1