diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-09-23 21:15:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-23 21:15:26 +0200 |
commit | f5951c7305306967a89de09d957ccd5699ec3f85 (patch) | |
tree | 2a68b480d48c7e230a81db1053e8c1a6f4128513 /libpod/oci_internal_linux.go | |
parent | a74dfdadd7cc02959c2a142658bedabdc4a607a3 (diff) | |
parent | 497678d9e348d10027b0b71de41a6aea11e5aba2 (diff) | |
download | podman-f5951c7305306967a89de09d957ccd5699ec3f85.tar.gz podman-f5951c7305306967a89de09d957ccd5699ec3f85.tar.bz2 podman-f5951c7305306967a89de09d957ccd5699ec3f85.zip |
Merge pull request #4074 from giuseppe/override-etc-passwd-group
execuser: look at the source for /etc/{passwd,group} overrides
Diffstat (limited to 'libpod/oci_internal_linux.go')
-rw-r--r-- | libpod/oci_internal_linux.go | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/libpod/oci_internal_linux.go b/libpod/oci_internal_linux.go index 4df1e4010..a90af32ed 100644 --- a/libpod/oci_internal_linux.go +++ b/libpod/oci_internal_linux.go @@ -200,13 +200,16 @@ func prepareProcessExec(c *Container, cmd, env []string, tty bool, cwd, user, se pspec.Cwd = cwd } + + overrides := c.getUserOverrides() + execUser, err := lookup.GetUserGroupInfo(c.state.Mountpoint, user, overrides) + if err != nil { + return nil, err + } + // If user was set, look it up in the container to get a UID to use on // the host if user != "" { - execUser, err := lookup.GetUserGroupInfo(c.state.Mountpoint, user, nil) - if err != nil { - return nil, err - } sgids := make([]uint32, 0, len(execUser.Sgids)) for _, sgid := range execUser.Sgids { sgids = append(sgids, uint32(sgid)) @@ -220,6 +223,17 @@ func prepareProcessExec(c *Container, cmd, env []string, tty bool, cwd, user, se pspec.User = processUser } + hasHomeSet := false + for _, s := range pspec.Env { + if strings.HasPrefix(s, "HOME=") { + hasHomeSet = true + break + } + } + if !hasHomeSet { + pspec.Env = append(pspec.Env, fmt.Sprintf("HOME=%s", execUser.Home)) + } + processJSON, err := json.Marshal(pspec) if err != nil { return nil, err |