Procházet zdrojové kódy

Merge pull request #47559 from AkihiroSuda/fix-47436

rootless: fix `open /etc/docker/plugins: permission denied`
Sebastiaan van Stijn před 1 rokem
rodič
revize
70e46f2c7c
1 změnil soubory, kde provedl 10 přidání a 2 odebrání
  1. 10 2
      pkg/plugins/discovery.go

+ 10 - 2
pkg/plugins/discovery.go

@@ -10,6 +10,8 @@ import (
 	"strings"
 	"strings"
 	"sync"
 	"sync"
 
 
+	"github.com/containerd/containerd/pkg/userns"
+	"github.com/containerd/log"
 	"github.com/pkg/errors"
 	"github.com/pkg/errors"
 )
 )
 
 
@@ -56,10 +58,16 @@ func (l *LocalRegistry) Scan() ([]string, error) {
 
 
 	for _, p := range l.specsPaths {
 	for _, p := range l.specsPaths {
 		dirEntries, err = os.ReadDir(p)
 		dirEntries, err = os.ReadDir(p)
-		if err != nil && !os.IsNotExist(err) {
+		if err != nil {
+			if os.IsNotExist(err) {
+				continue
+			}
+			if os.IsPermission(err) && userns.RunningInUserNS() {
+				log.L.Debug(err.Error())
+				continue
+			}
 			return nil, errors.Wrap(err, "error reading dir entries")
 			return nil, errors.Wrap(err, "error reading dir entries")
 		}
 		}
-
 		for _, entry := range dirEntries {
 		for _, entry := range dirEntries {
 			if entry.IsDir() {
 			if entry.IsDir() {
 				infos, err := os.ReadDir(filepath.Join(p, entry.Name()))
 				infos, err := os.ReadDir(filepath.Join(p, entry.Name()))