lib9p

Go 9P library.
Log | Files | Refs | LICENSE

uid_unix.go (817B)


      1 //go:build unix
      2 package diskfs
      3 
      4 import (
      5 	"os/user"
      6 )
      7 
      8 // assume that the group leader has the same name as uid
      9 func isGroupLeader(group, uid string) bool {
     10 	if group != uid {
     11 		return false
     12 	}
     13 	usr, err := user.Lookup(uid)
     14 	if err != nil {
     15 		return false
     16 	}
     17 	gids, err := usr.GroupIds()
     18 	if err != nil {
     19 		return false
     20 	}
     21 	grp, err := user.LookupGroup(group)
     22 	if err != nil {
     23 		return false
     24 	}
     25 	for _, gid := range gids {
     26 		if grp.Gid == gid {
     27 			return true
     28 		}
     29 	}
     30 	return false
     31 }
     32 
     33 func isGroupMember(group, uid string) bool {
     34 	usr, err := user.Lookup(uid)
     35 	if err != nil {
     36 		return false
     37 	}
     38 	gids, err := usr.GroupIds()
     39 	if err != nil {
     40 		return false
     41 	}
     42 	grp, err := user.LookupGroup(group)
     43 	if err != nil {
     44 		return false
     45 	}
     46 	for _, gid := range gids {
     47 		if grp.Gid == gid {
     48 			return true
     49 		}
     50 	}
     51 	return false
     52 }