Keep setuid/setgid syscalls in main()

git-svn-id: file:///srv/svn/repo/marisa/trunk@37 d6811dac-2434-b64a-9ddc-f563ab233461
This commit is contained in:
dev
2021-10-19 17:39:20 +00:00
parent b6d89f65b0
commit c57883653e

View File

@@ -265,10 +265,10 @@ func parseconfig(file string) error {
return nil return nil
} }
func dropprivilege(username string, groupname string) error { func usergroupids(username string, groupname string) (int, int, error) {
u, err := user.Lookup(username) u, err := user.Lookup(username)
if err != nil { if err != nil {
return err return -1, -1, err
} }
uid, _ := strconv.Atoi(u.Uid) uid, _ := strconv.Atoi(u.Uid)
@@ -277,15 +277,12 @@ func dropprivilege(username string, groupname string) error {
if conf.group != "" { if conf.group != "" {
g, err := user.LookupGroup(groupname) g, err := user.LookupGroup(groupname)
if err != nil { if err != nil {
return err return uid, -1, err
} }
gid, _ = strconv.Atoi(g.Gid) gid, _ = strconv.Atoi(g.Gid)
} }
syscall.Setuid(uid) return uid, gid, nil
syscall.Setgid(gid)
return nil
} }
func main() { func main() {
@@ -325,7 +322,12 @@ func main() {
if verbose { if verbose {
log.Printf("Dropping privileges to %s", conf.user) 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) http.HandleFunc("/", uploader)