Skip to content

Commit e9eaeaa

Browse files
committed
fix(middleware): use world-readable permissions for payload files
- Change directory permissions from 0700 to 0755 - Change file permissions from 0600 to 0644 - Allows agents running in containers to read payload files
1 parent a8e54eb commit e9eaeaa

File tree

4 files changed

+10
-10
lines changed

4 files changed

+10
-10
lines changed

internal/middleware/jqschema.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,12 @@ func savePayload(baseDir, sessionID, queryID string, payload []byte) (string, er
129129
logger.LogDebug("payload", "Creating payload directory: baseDir=%s, session=%s, query=%s, fullPath=%s",
130130
baseDir, sessionID, queryID, dir)
131131

132-
if err := os.MkdirAll(dir, 0700); err != nil {
132+
if err := os.MkdirAll(dir, 0755); err != nil {
133133
logger.LogError("payload", "Failed to create payload directory: path=%s, error=%v", dir, err)
134134
return "", fmt.Errorf("failed to create payload directory: %w", err)
135135
}
136136

137-
logger.LogDebug("payload", "Successfully created payload directory: path=%s, permissions=0700", dir)
137+
logger.LogDebug("payload", "Successfully created payload directory: path=%s, permissions=0755", dir)
138138

139139
// Save payload to file with restrictive permissions (owner read/write only)
140140
filePath := filepath.Join(dir, "payload.json")
@@ -143,13 +143,13 @@ func savePayload(baseDir, sessionID, queryID string, payload []byte) (string, er
143143
logger.LogInfo("payload", "Writing large payload to filesystem: path=%s, size=%d bytes (%.2f KB, %.2f MB)",
144144
filePath, payloadSize, float64(payloadSize)/1024, float64(payloadSize)/(1024*1024))
145145

146-
if err := os.WriteFile(filePath, payload, 0600); err != nil {
146+
if err := os.WriteFile(filePath, payload, 0644); err != nil {
147147
logger.LogError("payload", "Failed to write payload file: path=%s, size=%d bytes, error=%v",
148148
filePath, payloadSize, err)
149149
return "", fmt.Errorf("failed to write payload file: %w", err)
150150
}
151151

152-
logger.LogInfo("payload", "Successfully saved large payload to filesystem: path=%s, size=%d bytes, permissions=0600",
152+
logger.LogInfo("payload", "Successfully saved large payload to filesystem: path=%s, size=%d bytes, permissions=0644",
153153
filePath, payloadSize)
154154

155155
// Verify file was written correctly

internal/middleware/jqschema_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -496,12 +496,12 @@ func TestPayloadStorage_FilePermissions(t *testing.T) {
496496
dirPath := filepath.Dir(filePath)
497497
dirInfo, err := os.Stat(dirPath)
498498
require.NoError(t, err)
499-
assert.Equal(t, os.FileMode(0700), dirInfo.Mode().Perm(), "Directory should have 0700 permissions")
499+
assert.Equal(t, os.FileMode(0755), dirInfo.Mode().Perm(), "Directory should have 0755 permissions")
500500

501501
// Check file permissions
502502
fileInfo, err := os.Stat(filePath)
503503
require.NoError(t, err)
504-
assert.Equal(t, os.FileMode(0600), fileInfo.Mode().Perm(), "File should have 0600 permissions")
504+
assert.Equal(t, os.FileMode(0644), fileInfo.Mode().Perm(), "File should have 0644 permissions")
505505
}
506506

507507
// TestPayloadStorage_DefaultSessionID verifies behavior when session ID is empty

internal/server/unified.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -811,8 +811,8 @@ func (us *UnifiedServer) ensureSessionDirectory(sessionID string) error {
811811
return fmt.Errorf("failed to check session directory: %w", err)
812812
}
813813

814-
// Directory doesn't exist, create it with restrictive permissions (owner-only access)
815-
if err := os.MkdirAll(sessionDir, 0700); err != nil {
814+
// Directory doesn't exist, create it with world-readable permissions (for agent access)
815+
if err := os.MkdirAll(sessionDir, 0755); err != nil {
816816
return fmt.Errorf("failed to create session directory: %w", err)
817817
}
818818

internal/server/unified_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -549,8 +549,8 @@ func TestUnifiedServer_EnsureSessionDirectory(t *testing.T) {
549549
require.NoError(t, err, "Session directory should exist")
550550
assert.True(t, info.IsDir(), "Session path should be a directory")
551551

552-
// Verify directory has correct permissions (0700)
553-
assert.Equal(t, os.FileMode(0700), info.Mode().Perm(), "Session directory should have 0700 permissions")
552+
// Verify directory has correct permissions (0755 - world-readable for agent access)
553+
assert.Equal(t, os.FileMode(0755), info.Mode().Perm(), "Session directory should have 0755 permissions")
554554

555555
// Test that calling ensureSessionDirectory again doesn't fail (idempotent)
556556
err = us.ensureSessionDirectory(sessionID)

0 commit comments

Comments
 (0)