aboutsummaryrefslogtreecommitdiff
path: root/setuid_unix.go
blob: 8782a48fc567cc8c7d41ceba615776bfdbbbc85f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// +build linux darwin

package main

import (
	"errors"
	"syscall"
)

func setUidGid(syscallID uint, uidgid uint16) error {
	if uidgid == 0 {
		return nil
	}
	_, _, errno := syscall.Syscall(uintptr(syscallID), uintptr(uidgid), 0, 0)
	if errno != 0 {
		return errors.New(errno.Error())
	}
	return nil
}

func setUID(uid uint16) error {
	return setUidGid(syscall.SYS_SETUID, uid)
}

func setGID(gid uint16) error {
	return setUidGid(syscall.SYS_SETGID, gid)
}