Initial QSfera import
This commit is contained in:
+42
@@ -0,0 +1,42 @@
|
||||
//go:build !windows
|
||||
|
||||
package sysutil
|
||||
|
||||
import (
|
||||
"os"
|
||||
"syscall"
|
||||
|
||||
"github.com/gookit/goutil/strutil"
|
||||
)
|
||||
|
||||
// IsAdmin Determine whether the current user is an administrator(root)
|
||||
func IsAdmin() bool {
|
||||
return os.Getuid() == 0
|
||||
}
|
||||
|
||||
// ChangeUserByName change work user by new username.
|
||||
func ChangeUserByName(newUname string) error {
|
||||
u := MustFindUser(newUname)
|
||||
// syscall.Setlogin(newUname)
|
||||
return ChangeUserUIDGid(strutil.MustInt(u.Uid), strutil.MustInt(u.Gid))
|
||||
}
|
||||
|
||||
// ChangeUserUidGid change work user by new username uid,gid
|
||||
//
|
||||
// Deprecated: use ChangeUserUIDGid instead
|
||||
func ChangeUserUidGid(newUID int, newGid int) error {
|
||||
return ChangeUserUIDGid(newUID, newGid)
|
||||
}
|
||||
|
||||
// ChangeUserUIDGid change work user by new username uid,gid
|
||||
func ChangeUserUIDGid(newUID int, newGid int) (err error) {
|
||||
if newUID > 0 {
|
||||
err = syscall.Setuid(newUID)
|
||||
|
||||
// update group id
|
||||
if err == nil && newGid > 0 {
|
||||
err = syscall.Setgid(newGid)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user