diff options
author | Giuseppe Scrivano <gscrivan@redhat.com> | 2018-08-05 14:11:29 +0200 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-08-08 09:27:27 +0000 |
commit | 9e06478d8307b0279c991fd47122755fdf7bd922 (patch) | |
tree | 3061f33e9fa82287305a46afa9b8927df21e0cf6 | |
parent | 14b6106c7b46fdd44c811a2697e3f3608fef8215 (diff) | |
download | podman-9e06478d8307b0279c991fd47122755fdf7bd922.tar.gz podman-9e06478d8307b0279c991fd47122755fdf7bd922.tar.bz2 podman-9e06478d8307b0279c991fd47122755fdf7bd922.zip |
rootless: fix user lookup if USER= is not set
Lookup the current username by UID if the USER env variable is not
set.
Reported in: https://github.com/projectatomic/libpod/issues/1092
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Closes: #1217
Approved by: rhatdan
-rw-r--r-- | pkg/rootless/rootless_linux.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/pkg/rootless/rootless_linux.go b/pkg/rootless/rootless_linux.go index d34782171..490ddc33e 100644 --- a/pkg/rootless/rootless_linux.go +++ b/pkg/rootless/rootless_linux.go @@ -8,6 +8,7 @@ import ( "os" "os/exec" gosignal "os/signal" + "os/user" "runtime" "strconv" "syscall" @@ -97,6 +98,15 @@ func BecomeRootInUserNS() (bool, int, error) { var uids, gids []idtools.IDMap username := os.Getenv("USER") + if username == "" { + user, err := user.LookupId(fmt.Sprintf("%d", os.Geteuid())) + if err != nil && os.Getenv("PODMAN_ALLOW_SINGLE_ID_MAPPING_IN_USERNS") == "" { + return false, 0, errors.Wrapf(err, "could not find user by UID nor USER env was set") + } + if err == nil { + username = user.Username + } + } mappings, err := idtools.NewIDMappings(username, username) if err != nil && os.Getenv("PODMAN_ALLOW_SINGLE_ID_MAPPING_IN_USERNS") == "" { return false, -1, err |