mirror of
https://github.com/containers/podman.git
synced 2025-09-26 00:06:04 +08:00
exec: run with user specified on container start
Before, if the container was run with a specified user that wasn't root, exec would fail because it always set to root unless respecified by user. instead, inherit the user from the container start. Signed-off-by: Peter Hunt <pehunt@redhat.com>
This commit is contained in:
@ -274,6 +274,11 @@ func (c *Container) Exec(tty, privileged bool, env, cmd []string, user, workDir
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
// if the user is empty, we should inherit the user that the container is currently running with
|
||||||
|
if user == "" {
|
||||||
|
user = c.config.User
|
||||||
|
}
|
||||||
|
|
||||||
pid, attachChan, err := c.ociRuntime.execContainer(c, cmd, capList, env, tty, workDir, user, sessionID, streams, preserveFDs, resize, detachKeys)
|
pid, attachChan, err := c.ociRuntime.execContainer(c, cmd, capList, env, tty, workDir, user, sessionID, streams, preserveFDs, resize, detachKeys)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ec := define.ExecErrorCodeGeneric
|
ec := define.ExecErrorCodeGeneric
|
||||||
|
@ -146,6 +146,25 @@ var _ = Describe("Podman exec", func() {
|
|||||||
Expect(session2.OutputToString()).To(Equal(testUser))
|
Expect(session2.OutputToString()).To(Equal(testUser))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("podman exec with user from run", func() {
|
||||||
|
testUser := "guest"
|
||||||
|
setup := podmanTest.Podman([]string{"run", "--user", testUser, "-d", ALPINE, "top"})
|
||||||
|
setup.WaitWithDefaultTimeout()
|
||||||
|
Expect(setup.ExitCode()).To(Equal(0))
|
||||||
|
ctrID := setup.OutputToString()
|
||||||
|
|
||||||
|
session := podmanTest.Podman([]string{"exec", ctrID, "whoami"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
Expect(session.OutputToString()).To(ContainSubstring(testUser))
|
||||||
|
|
||||||
|
overrideUser := "root"
|
||||||
|
session = podmanTest.Podman([]string{"exec", "--user", overrideUser, ctrID, "whoami"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.ExitCode()).To(Equal(0))
|
||||||
|
Expect(session.OutputToString()).To(ContainSubstring(overrideUser))
|
||||||
|
})
|
||||||
|
|
||||||
It("podman exec simple working directory test", func() {
|
It("podman exec simple working directory test", func() {
|
||||||
setup := podmanTest.RunTopContainer("test1")
|
setup := podmanTest.RunTopContainer("test1")
|
||||||
setup.WaitWithDefaultTimeout()
|
setup.WaitWithDefaultTimeout()
|
||||||
|
Reference in New Issue
Block a user