From a04ce6893ba00dd184f7b223c74d1901c898880d Mon Sep 17 00:00:00 2001 From: Giuseppe Scrivano Date: Tue, 14 Aug 2018 10:58:32 +0200 Subject: rootless: not require userns for help/version these commands do not require to be root in an userns Closes: https://github.com/containers/libpod/issues/1263 Signed-off-by: Giuseppe Scrivano Closes: #1268 Approved by: vrothberg --- cmd/podman/main.go | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'cmd') diff --git a/cmd/podman/main.go b/cmd/podman/main.go index dbd7c1155..7a669b3fe 100644 --- a/cmd/podman/main.go +++ b/cmd/podman/main.go @@ -25,19 +25,12 @@ var ( exitCode = 125 ) +var cmdsNotRequiringRootless = map[string]bool{"help": true, "version": true} + func main() { debug := false cpuProfile := false - became, ret, err := rootless.BecomeRootInUserNS() - if err != nil { - logrus.Errorf(err.Error()) - os.Exit(1) - } - if became { - os.Exit(ret) - } - if reexec.Init() { return } @@ -97,6 +90,19 @@ func main() { } app.Before = func(c *cli.Context) error { + args := c.Args() + if args.Present() { + if _, notRequireRootless := cmdsNotRequiringRootless[args.First()]; !notRequireRootless { + became, ret, err := rootless.BecomeRootInUserNS() + if err != nil { + logrus.Errorf(err.Error()) + os.Exit(1) + } + if became { + os.Exit(ret) + } + } + } if c.GlobalBool("syslog") { hook, err := lsyslog.NewSyslogHook("", "", syslog.LOG_INFO, "") if err == nil { -- cgit v1.2.3-54-g00ecf