Skip to content

Commit aec6a49

Browse files
committed
(bug) fix permissions problems with pregen cache access (#1018)
* fix permissions problems with pregen cache access * constant replacement Signed-off-by: Jordan <[email protected]> Upstream-repository: operator-registry Upstream-commit: ce3bb44f7618726474a78f95852e30a2bfb0346a
1 parent b94e073 commit aec6a49

File tree

7 files changed

+59
-13
lines changed

7 files changed

+59
-13
lines changed

staging/operator-registry/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ require (
3535
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3
3636
golang.org/x/net v0.0.0-20220407224826-aac1ed45d8e3
3737
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
38+
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad
3839
google.golang.org/grpc v1.45.0
3940
google.golang.org/grpc/cmd/protoc-gen-go-grpc v0.0.0-20200709232328-d8193ee9cc3e
4041
google.golang.org/protobuf v1.28.0
@@ -148,7 +149,6 @@ require (
148149
go.opentelemetry.io/proto/otlp v0.7.0 // indirect
149150
golang.org/x/crypto v0.0.0-20220408190544-5352b0902921 // indirect
150151
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
151-
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect
152152
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
153153
golang.org/x/text v0.3.7 // indirect
154154
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect

staging/operator-registry/pkg/registry/query.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ import (
1717
"github.com/operator-framework/operator-registry/pkg/api"
1818
)
1919

20+
const (
21+
cachePermissionDir = 0750
22+
cachePermissionFile = 0640
23+
)
24+
2025
type Querier struct {
2126
*cache
2227
}
@@ -423,7 +428,7 @@ func newEphemeralCache() (*cache, error) {
423428
if err != nil {
424429
return nil, err
425430
}
426-
if err := os.MkdirAll(filepath.Join(baseDir, "cache"), 0700); err != nil {
431+
if err := os.MkdirAll(filepath.Join(baseDir, "cache"), cachePermissionDir); err != nil {
427432
return nil, err
428433
}
429434
return &cache{
@@ -434,7 +439,7 @@ func newEphemeralCache() (*cache, error) {
434439
}
435440

436441
func newPersistentCache(baseDir string) (*cache, error) {
437-
if err := os.MkdirAll(baseDir, 0700); err != nil {
442+
if err := os.MkdirAll(baseDir, cachePermissionDir); err != nil {
438443
return nil, err
439444
}
440445
qc := &cache{baseDir: baseDir, persist: true}
@@ -481,6 +486,10 @@ func (qc *cache) loadFromCache() error {
481486
}
482487

483488
func (qc *cache) repopulateCache(model digestableModel) error {
489+
// ensure that generated cache is available to all future users
490+
oldUmask := umask(000)
491+
defer umask(oldUmask)
492+
484493
m, err := model.GetModel()
485494
if err != nil {
486495
return err
@@ -494,7 +503,7 @@ func (qc *cache) repopulateCache(model digestableModel) error {
494503
return err
495504
}
496505
}
497-
if err := os.MkdirAll(filepath.Join(qc.baseDir, "cache"), 0700); err != nil {
506+
if err := os.MkdirAll(filepath.Join(qc.baseDir, "cache"), cachePermissionDir); err != nil {
498507
return err
499508
}
500509

@@ -507,7 +516,7 @@ func (qc *cache) repopulateCache(model digestableModel) error {
507516
if err != nil {
508517
return err
509518
}
510-
if err := os.WriteFile(filepath.Join(qc.baseDir, "cache", "packages.json"), packageJson, 0600); err != nil {
519+
if err := os.WriteFile(filepath.Join(qc.baseDir, "cache", "packages.json"), packageJson, cachePermissionFile); err != nil {
511520
return err
512521
}
513522

@@ -524,7 +533,7 @@ func (qc *cache) repopulateCache(model digestableModel) error {
524533
return err
525534
}
526535
filename := filepath.Join(qc.baseDir, "cache", fmt.Sprintf("%s_%s_%s.json", p.Name, ch.Name, b.Name))
527-
if err := os.WriteFile(filename, jsonBundle, 0666); err != nil {
536+
if err := os.WriteFile(filename, jsonBundle, cachePermissionFile); err != nil {
528537
return err
529538
}
530539
qc.apiBundles[apiBundleKey{p.Name, ch.Name, b.Name}] = filename
@@ -533,7 +542,7 @@ func (qc *cache) repopulateCache(model digestableModel) error {
533542
}
534543
computedHash, err := model.GetDigest()
535544
if err == nil {
536-
if err := os.WriteFile(filepath.Join(qc.baseDir, "digest"), []byte(computedHash), 0600); err != nil {
545+
if err := os.WriteFile(filepath.Join(qc.baseDir, "digest"), []byte(computedHash), cachePermissionFile); err != nil {
537546
return err
538547
}
539548
} else if !errors.Is(err, errNonDigestable) {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//go:build !windows
2+
// +build !windows
3+
4+
package registry
5+
6+
import "golang.org/x/sys/unix"
7+
8+
var umask = unix.Umask
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
//go:build windows
2+
// +build windows
3+
4+
package registry
5+
6+
var umask = func(i int) int { return 0 }

vendor/github.com/operator-framework/operator-registry/pkg/registry/query.go

Lines changed: 15 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/operator-framework/operator-registry/pkg/registry/syscall_unix.go

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/operator-framework/operator-registry/pkg/registry/syscall_windows.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)