@@ -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+
2025type 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
436441func 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
483488func (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 ) {
0 commit comments