mirror of
https://github.com/netbirdio/netbird.git
synced 2026-09-01 20:41:28 +02:00
37 lines
1007 B
Go
37 lines
1007 B
Go
//go:build cgo && !osusergo && !windows
|
|
|
|
package getent
|
|
|
|
import "os/user"
|
|
|
|
// Built with cgo, os/user resolves through libc (getpwnam_r and friends),
|
|
// which goes through the host's NSS stack natively. Whatever it fails to
|
|
// find, the getent command would not find either, so there is nothing to
|
|
// fall back to.
|
|
|
|
// LookupUser looks up a user by name.
|
|
func LookupUser(username string) (*user.User, error) {
|
|
return user.Lookup(username)
|
|
}
|
|
|
|
// LookupUserID looks up a user by UID.
|
|
func LookupUserID(uid string) (*user.User, error) {
|
|
return user.LookupId(uid)
|
|
}
|
|
|
|
// CurrentUser returns the user this process runs as.
|
|
func CurrentUser() (*user.User, error) {
|
|
return user.Current()
|
|
}
|
|
|
|
// LookupGroupID looks up a group by GID.
|
|
func LookupGroupID(gid string) (*user.Group, error) {
|
|
return user.LookupGroupId(gid)
|
|
}
|
|
|
|
// GroupIDs returns the IDs of the groups the user is a member of; libc's
|
|
// getgrouplist handles NSS groups natively.
|
|
func GroupIDs(u *user.User) ([]string, error) {
|
|
return u.GroupIds()
|
|
}
|