moby/1015-rootless-fix-open-etc-docker-plugins-permission-deni.patch
shechenglong 770c015253 rootless: fix open /etc/docker/plugins: permission denied
Signed-off-by: shechenglong <shechenglong@xfusion.com>
2025-04-19 17:11:43 +08:00

54 lines
1.5 KiB
Diff

From 81ad7062f0299c4ebc9ac3f576a2c0c67d8b6ff8 Mon Sep 17 00:00:00 2001
From: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
Date: Thu, 14 Mar 2024 14:32:01 +0900
Subject: [PATCH 026/172] rootless: fix `open /etc/docker/plugins: permission
denied`
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fix issue 47436
Signed-off-by: Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp>
(cherry picked from commit d742659877d9bf0bfe64b97e529bc28667974607)
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
---
pkg/plugins/discovery.go | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/pkg/plugins/discovery.go b/pkg/plugins/discovery.go
index 37316ed482..503ac574a9 100644
--- a/pkg/plugins/discovery.go
+++ b/pkg/plugins/discovery.go
@@ -10,6 +10,8 @@ import (
"strings"
"sync"
+ "github.com/containerd/containerd/pkg/userns"
+ "github.com/containerd/log"
"github.com/pkg/errors"
)
@@ -56,10 +58,16 @@ func (l *LocalRegistry) Scan() ([]string, error) {
for _, p := range l.specsPaths {
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")
}
-
for _, entry := range dirEntries {
if entry.IsDir() {
infos, err := os.ReadDir(filepath.Join(p, entry.Name()))
--
2.27.0