// Copyright (c) 2021 Tailscale Inc & AUTHORS All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package groupmember verifies group membership of the provided user on the // local system. package groupmember import ( "os/user" ) // IsMemberOfGroup reports whether the provided user is a member of // the provided system group. func IsMemberOfGroup(group, userName string) (bool, error) { u, err := user.Lookup(userName) if err != nil { return false, err } ugids, err := u.GroupIds() if err != nil { return false, err } g, err := user.LookupGroup(group) if err != nil { return false, err } for _, ugid := range ugids { if g.Gid == ugid { return true, nil } } return false, nil }