group_unix.go 745 B

12345678910111213141516171819202122232425262728293031323334
  1. // +build !windows
  2. package listeners
  3. import (
  4. "fmt"
  5. "strconv"
  6. "github.com/opencontainers/runc/libcontainer/user"
  7. "github.com/pkg/errors"
  8. )
  9. const defaultSocketGroup = "docker"
  10. func lookupGID(name string) (int, error) {
  11. groupFile, err := user.GetGroupPath()
  12. if err != nil {
  13. return -1, errors.Wrap(err, "error looking up groups")
  14. }
  15. groups, err := user.ParseGroupFileFilter(groupFile, func(g user.Group) bool {
  16. return g.Name == name || strconv.Itoa(g.Gid) == name
  17. })
  18. if err != nil {
  19. return -1, errors.Wrapf(err, "error parsing groups for %s", name)
  20. }
  21. if len(groups) > 0 {
  22. return groups[0].Gid, nil
  23. }
  24. gid, err := strconv.Atoi(name)
  25. if err == nil {
  26. return gid, nil
  27. }
  28. return -1, fmt.Errorf("group %s not found", name)
  29. }