Merge pull request #11056 from giuseppe/warning-root-no-shared

rootless: check that / is mounted as shared
This commit is contained in:
OpenShift Merge Robot 2021-07-28 15:06:27 +02:00 committed by GitHub
commit 1176c41a60
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 0 deletions

View File

@ -14,11 +14,13 @@ import (
"os/user"
"runtime"
"strconv"
"strings"
"sync"
"unsafe"
"github.com/containers/podman/v3/pkg/errorhandling"
"github.com/containers/storage/pkg/idtools"
pmount "github.com/containers/storage/pkg/mount"
"github.com/containers/storage/pkg/unshare"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
@ -235,6 +237,24 @@ func becomeRootInUserNS(pausePid, fileToRead string, fileOutput *os.File) (_ boo
return false, 0, nil
}
if mounts, err := pmount.GetMounts(); err == nil {
for _, m := range mounts {
if m.Mountpoint == "/" {
isShared := false
for _, o := range strings.Split(m.Optional, ",") {
if strings.HasPrefix(o, "shared:") {
isShared = true
break
}
}
if !isShared {
logrus.Warningf("%q is not a shared mount, this could cause issues or missing mounts with rootless containers", m.Mountpoint)
}
break
}
}
}
cPausePid := C.CString(pausePid)
defer C.free(unsafe.Pointer(cPausePid))