summaryrefslogtreecommitdiff
path: root/pkg/chrootuser/user_linux.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2018-10-12 08:31:56 -0700
committerGitHub <noreply@github.com>2018-10-12 08:31:56 -0700
commitb0b6dc40bd916698f87bc68f7b4b603582e93ef2 (patch)
tree44c98351368924013f8a27e3f7c1f66c0953b08c /pkg/chrootuser/user_linux.go
parent9a933c70b1cf60c48211bc700d726074aa4536a0 (diff)
parent04a537756d9b7b526759c02b5b5d68c135b210ea (diff)
downloadpodman-b0b6dc40bd916698f87bc68f7b4b603582e93ef2.tar.gz
podman-b0b6dc40bd916698f87bc68f7b4b603582e93ef2.tar.bz2
podman-b0b6dc40bd916698f87bc68f7b4b603582e93ef2.zip
Merge pull request #1558 from rhatdan/user
Generate a passwd file for users not in container
Diffstat (limited to 'pkg/chrootuser/user_linux.go')
-rw-r--r--pkg/chrootuser/user_linux.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/pkg/chrootuser/user_linux.go b/pkg/chrootuser/user_linux.go
index acd0af822..583eca569 100644
--- a/pkg/chrootuser/user_linux.go
+++ b/pkg/chrootuser/user_linux.go
@@ -265,3 +265,29 @@ func lookupGroupInContainer(rootdir, groupname string) (gid uint64, err error) {
return 0, user.UnknownGroupError(fmt.Sprintf("error looking up group %q", groupname))
}
+
+func lookupUIDInContainer(rootdir string, uid uint64) (string, uint64, error) {
+ cmd, f, err := openChrootedFile(rootdir, "/etc/passwd")
+ if err != nil {
+ return "", 0, err
+ }
+ defer func() {
+ _ = cmd.Wait()
+ }()
+ rc := bufio.NewReader(f)
+ defer f.Close()
+
+ lookupUser.Lock()
+ defer lookupUser.Unlock()
+
+ pwd := parseNextPasswd(rc)
+ for pwd != nil {
+ if pwd.uid != uid {
+ pwd = parseNextPasswd(rc)
+ continue
+ }
+ return pwd.name, pwd.gid, nil
+ }
+
+ return "", 0, user.UnknownUserError(fmt.Sprintf("error looking up uid %q", uid))
+}