summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiuseppe Scrivano <gscrivan@redhat.com>2018-08-05 14:11:29 +0200
committerAtomic Bot <atomic-devel@projectatomic.io>2018-08-08 09:27:27 +0000
commit9e06478d8307b0279c991fd47122755fdf7bd922 (patch)
tree3061f33e9fa82287305a46afa9b8927df21e0cf6
parent14b6106c7b46fdd44c811a2697e3f3608fef8215 (diff)
downloadpodman-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.go10
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