summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-06-02 20:51:13 +0200
committerGitHub <noreply@github.com>2020-06-02 20:51:13 +0200
commitc4ccd7cbc1509bab6183c47f740cbf2cc4ee0424 (patch)
treee93a98054a8cb3f956aaf94b96705371f80cbdcc /pkg
parent37ac21ff085b6e17adec3c0d9945524aa41029ae (diff)
parent77e4b077b9d8989b1300689103a5489bd1ad9a8b (diff)
downloadpodman-c4ccd7cbc1509bab6183c47f740cbf2cc4ee0424.tar.gz
podman-c4ccd7cbc1509bab6183c47f740cbf2cc4ee0424.tar.bz2
podman-c4ccd7cbc1509bab6183c47f740cbf2cc4ee0424.zip
Merge pull request #6435 from QiWang19/uid
check --user range for rootless containers
Diffstat (limited to 'pkg')
-rw-r--r--pkg/util/utils_linux.go16
-rw-r--r--pkg/util/utils_unsupported.go5
2 files changed, 21 insertions, 0 deletions
diff --git a/pkg/util/utils_linux.go b/pkg/util/utils_linux.go
index 288137ca5..5e4dc4a51 100644
--- a/pkg/util/utils_linux.go
+++ b/pkg/util/utils_linux.go
@@ -6,6 +6,7 @@ import (
"path/filepath"
"syscall"
+ "github.com/containers/libpod/pkg/rootless"
"github.com/containers/psgo"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
@@ -52,3 +53,18 @@ func FindDeviceNodes() (map[string]string, error) {
return nodes, nil
}
+
+// CheckRootlessUIDRange checks the uid within the rootless container is in the range from /etc/subuid
+func CheckRootlessUIDRange(uid int) error {
+ uids, _, err := rootless.GetConfiguredMappings()
+ if err != nil {
+ return err
+ }
+ for _, u := range uids {
+ // add 1 since we also map in the user's own UID
+ if uid > u.Size+1 {
+ return errors.Errorf("requested user's UID %d is too large for the rootless user namespace", uid)
+ }
+ }
+ return nil
+}
diff --git a/pkg/util/utils_unsupported.go b/pkg/util/utils_unsupported.go
index 62805d7c8..f8d5a37c1 100644
--- a/pkg/util/utils_unsupported.go
+++ b/pkg/util/utils_unsupported.go
@@ -10,3 +10,8 @@ import (
func FindDeviceNodes() (map[string]string, error) {
return nil, errors.Errorf("not supported on non-Linux OSes")
}
+
+// CheckRootlessUIDRange is not implemented anywhere except Linux.
+func CheckRootlessUIDRange(uid int) error {
+ return nil
+}