try to create the runroot before we warn that it is not writable

The rootless integration tests show the XDG_RUNTIME_DIR warning without
any reasons. Podman runs without problems in these and yet the warning
is shown. I think the problem is that we check the permission before we
create the runroot directory.

[NO TESTS NEEDED]

Fixes #11521

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
Paul Holzinger 2021-09-10 13:06:22 +02:00
parent 63f6656f8f
commit 8d638d502b
No known key found for this signature in database
GPG Key ID: EB145DD938A3CAF2
1 changed files with 10 additions and 2 deletions

View File

@ -335,8 +335,16 @@ func makeRuntime(ctx context.Context, runtime *Runtime) (retErr error) {
// If user is rootless and XDG_RUNTIME_DIR is found, podman will not proceed with /tmp directory
// it will try to use existing XDG_RUNTIME_DIR
// if current user has no write access to XDG_RUNTIME_DIR we will fail later
if unix.Access(runtime.storageConfig.RunRoot, unix.W_OK) != nil {
logrus.Warnf("XDG_RUNTIME_DIR is pointing to a path which is not writable. Most likely podman will fail.")
if err := unix.Access(runtime.storageConfig.RunRoot, unix.W_OK); err != nil {
msg := "XDG_RUNTIME_DIR is pointing to a path which is not writable. Most likely podman will fail."
if errors.Is(err, os.ErrNotExist) {
// if dir does not exists try to create it
if err := os.MkdirAll(runtime.storageConfig.RunRoot, 0700); err != nil {
logrus.Warn(msg)
}
} else {
logrus.Warn(msg)
}
}
}