diff options
author | Daniel J Walsh <dwalsh@redhat.com> | 2018-07-13 14:15:54 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-13 14:15:54 -0400 |
commit | 673465a7475f2c4ed6bfe06c481ecc99a2510c30 (patch) | |
tree | 9552b4b7e5956fbb798bf9d77820c7d30035a8c3 /cmd/podman | |
parent | 827359c8e6b116b839a95460cc1775a11f84b682 (diff) | |
parent | 62e48e5b71abe3002361bbf018961f8031fba03e (diff) | |
download | podman-673465a7475f2c4ed6bfe06c481ecc99a2510c30.tar.gz podman-673465a7475f2c4ed6bfe06c481ecc99a2510c30.tar.bz2 podman-673465a7475f2c4ed6bfe06c481ecc99a2510c30.zip |
Merge pull request #1075 from giuseppe/rootless-no-symlinks-into-storage-path
rootless: fix usage on Fedora Silverblue/CoreOS
Diffstat (limited to 'cmd/podman')
-rw-r--r-- | cmd/podman/libpodruntime/runtime.go | 15 | ||||
-rw-r--r-- | cmd/podman/main.go | 4 |
2 files changed, 15 insertions, 4 deletions
diff --git a/cmd/podman/libpodruntime/runtime.go b/cmd/podman/libpodruntime/runtime.go index b48667653..098864810 100644 --- a/cmd/podman/libpodruntime/runtime.go +++ b/cmd/podman/libpodruntime/runtime.go @@ -6,6 +6,7 @@ import ( "path/filepath" "github.com/containers/storage" + "github.com/pkg/errors" "github.com/projectatomic/libpod/libpod" "github.com/projectatomic/libpod/pkg/rootless" "github.com/urfave/cli" @@ -23,7 +24,11 @@ func GetRuntime(c *cli.Context) (*libpod.Runtime, error) { func GetRootlessStorageOpts() (storage.StoreOptions, error) { var opts storage.StoreOptions - opts.RunRoot = filepath.Join(libpod.GetRootlessRuntimeDir(), "run") + rootlessRuntime, err := libpod.GetRootlessRuntimeDir() + if err != nil { + return opts, err + } + opts.RunRoot = filepath.Join(rootlessRuntime, "run") dataDir := os.Getenv("XDG_DATA_HOME") if dataDir == "" { @@ -31,7 +36,13 @@ func GetRootlessStorageOpts() (storage.StoreOptions, error) { if home == "" { return opts, fmt.Errorf("neither XDG_DATA_HOME nor HOME was set non-empty") } - dataDir = filepath.Join(home, ".local", "share") + // runc doesn't like symlinks in the rootfs path, and at least + // on CoreOS /home is a symlink to /var/home, so resolve any symlink. + resolvedHome, err := filepath.EvalSymlinks(home) + if err != nil { + return opts, errors.Wrapf(err, "cannot resolve %s", home) + } + dataDir = filepath.Join(resolvedHome, ".local", "share") } opts.GraphRoot = filepath.Join(dataDir, "containers", "storage") opts.GraphDriverName = "vfs" diff --git a/cmd/podman/main.go b/cmd/podman/main.go index a83dc5fb4..3dbf196c2 100644 --- a/cmd/podman/main.go +++ b/cmd/podman/main.go @@ -29,13 +29,13 @@ func main() { debug := false cpuProfile := false - became, err := rootless.BecomeRootInUserNS() + became, ret, err := rootless.BecomeRootInUserNS() if err != nil { logrus.Errorf(err.Error()) os.Exit(1) } if became { - os.Exit(0) + os.Exit(ret) } if reexec.Init() { |