nano-run/server/mode_bin_linux.go

36 lines
553 B
Go

package server
import (
"os/exec"
"os/user"
"strconv"
"syscall"
)
func setUser(cmd *exec.Cmd, userName string) error {
if userName == "" {
return nil
}
info, err := user.Lookup(userName)
if err != nil {
return err
}
uid, err := strconv.Atoi(info.Uid)
if err != nil {
return err
}
gid, err := strconv.Atoi(info.Gid)
if err != nil {
return err
}
if cmd.SysProcAttr == nil {
cmd.SysProcAttr = &syscall.SysProcAttr{}
}
cmd.SysProcAttr.Credential = &syscall.Credential{
Uid: uint32(uid),
Gid: uint32(gid),
}
return nil
}