From c57883653e8bd04e539ae115f6b2e5edaeecabb8 Mon Sep 17 00:00:00 2001 From: dev Date: Tue, 19 Oct 2021 17:39:20 +0000 Subject: [PATCH] Keep setuid/setgid syscalls in main() git-svn-id: file:///srv/svn/repo/marisa/trunk@37 d6811dac-2434-b64a-9ddc-f563ab233461 --- partage.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/partage.go b/partage.go index a59faa4..4b4cd91 100644 --- a/partage.go +++ b/partage.go @@ -265,10 +265,10 @@ func parseconfig(file string) error { return nil } -func dropprivilege(username string, groupname string) error { +func usergroupids(username string, groupname string) (int, int, error) { u, err := user.Lookup(username) if err != nil { - return err + return -1, -1, err } uid, _ := strconv.Atoi(u.Uid) @@ -277,15 +277,12 @@ func dropprivilege(username string, groupname string) error { if conf.group != "" { g, err := user.LookupGroup(groupname) if err != nil { - return err + return uid, -1, err } gid, _ = strconv.Atoi(g.Gid) } - syscall.Setuid(uid) - syscall.Setgid(gid) - - return nil + return uid, gid, nil } func main() { @@ -325,7 +322,12 @@ func main() { if verbose { log.Printf("Dropping privileges to %s", conf.user) } - dropprivilege(conf.user, conf.group) + uid, gid, err := usergroupids(conf.user, conf.group) + if err != nil { + log.Fatal(err) + } + syscall.Setuid(uid) + syscall.Setgid(gid) } http.HandleFunc("/", uploader)