|
@@ -0,0 +1,32 @@
|
|
|
+// +build !windows
|
|
|
+
|
|
|
+package listeners
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "strconv"
|
|
|
+
|
|
|
+ "github.com/opencontainers/runc/libcontainer/user"
|
|
|
+ "github.com/pkg/errors"
|
|
|
+)
|
|
|
+
|
|
|
+func lookupGID(name string) (int, error) {
|
|
|
+ groupFile, err := user.GetGroupPath()
|
|
|
+ if err != nil {
|
|
|
+ return -1, errors.Wrap(err, "error looking up groups")
|
|
|
+ }
|
|
|
+ groups, err := user.ParseGroupFileFilter(groupFile, func(g user.Group) bool {
|
|
|
+ return g.Name == name || strconv.Itoa(g.Gid) == name
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ return -1, errors.Wrapf(err, "error parsing groups for %s", name)
|
|
|
+ }
|
|
|
+ if groups != nil && len(groups) > 0 {
|
|
|
+ return groups[0].Gid, nil
|
|
|
+ }
|
|
|
+ gid, err := strconv.Atoi(name)
|
|
|
+ if err == nil {
|
|
|
+ return gid, nil
|
|
|
+ }
|
|
|
+ return -1, fmt.Errorf("group %s not found", name)
|
|
|
+}
|