Skip to content

Commit 6f3a659

Browse files
committed
fix(devcontainer): use 0o755 for feature directories so non-root users can actually walk into them
MkdirAll was called with 0o644 (rw-r--r--) which drops the execute bit that directories need to be traversable. Harmless on the in-memory filesystem used in tests, but on a real filesystem non-root container users couldn't access feature install scripts. Fixes #506
1 parent da95f80 commit 6f3a659

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

devcontainer/devcontainer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ func (s *Spec) compileFeatures(fs billy.Filesystem, devcontainerDir, scratchDir
227227
}
228228

229229
featuresDir := filepath.Join(scratchDir, "features")
230-
err := fs.MkdirAll(featuresDir, 0o644)
230+
err := fs.MkdirAll(featuresDir, 0o755)
231231
if err != nil {
232232
return "", nil, fmt.Errorf("create features directory: %w", err)
233233
}
@@ -277,7 +277,7 @@ func (s *Spec) compileFeatures(fs billy.Filesystem, devcontainerDir, scratchDir
277277
featureSha := md5.Sum([]byte(featureRefRaw))
278278
featureName := filepath.Base(featureRef)
279279
featureDir := filepath.Join(featuresDir, fmt.Sprintf("%s-%x", featureName, featureSha[:4]))
280-
if err := fs.MkdirAll(featureDir, 0o644); err != nil {
280+
if err := fs.MkdirAll(featureDir, 0o755); err != nil {
281281
return "", nil, err
282282
}
283283
spec, err := features.Extract(fs, devcontainerDir, featureDir, featureRefRaw)

0 commit comments

Comments
 (0)