Skip to content

Commit b992ca8

Browse files
authored
dumpling: precheck log file permisssion (#61101) (#61102)
close #61100
1 parent b957a04 commit b992ca8

File tree

4 files changed

+52
-11
lines changed

4 files changed

+52
-11
lines changed

DEPS.bzl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5802,13 +5802,13 @@ def go_deps():
58025802
name = "com_github_pingcap_log",
58035803
build_file_proto_mode = "disable_global",
58045804
importpath = "github.com/pingcap/log",
5805-
sha256 = "8c5ac751f87626274ace3b615ff7b88552eede51c58eddb6c1f0a7ba5b191c6e",
5806-
strip_prefix = "github.com/pingcap/log@v1.1.1-0.20250424032633-85a82d016f84",
5805+
sha256 = "ca74400554017427f09ab72ffb5ba4b6e1f8b92235839f518fc102a3231aa267",
5806+
strip_prefix = "github.com/pingcap/log@v1.1.1-0.20250514022801-14f3b4ca066e",
58075807
urls = [
5808-
"http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250424032633-85a82d016f84.zip",
5809-
"http://ats.apps.svc/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250424032633-85a82d016f84.zip",
5810-
"https://cache.hawkingrei.com/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250424032633-85a82d016f84.zip",
5811-
"https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250424032633-85a82d016f84.zip",
5808+
"http://bazel-cache.pingcap.net:8080/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250514022801-14f3b4ca066e.zip",
5809+
"http://ats.apps.svc/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250514022801-14f3b4ca066e.zip",
5810+
"https://cache.hawkingrei.com/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250514022801-14f3b4ca066e.zip",
5811+
"https://storage.googleapis.com/pingcapmirror/gomod/github.com/pingcap/log/com_github_pingcap_log-v1.1.1-0.20250514022801-14f3b4ca066e.zip",
58125812
],
58135813
)
58145814
go_repository(

dumpling/log/log_test.go

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,19 @@ package log
1616

1717
import (
1818
"os"
19+
"path/filepath"
1920
"testing"
2021

2122
"github.com/stretchr/testify/require"
2223
)
2324

2425
func TestInitLogNoPermission(t *testing.T) {
26+
if os.Geteuid() == 0 {
27+
t.Skip("Skip test when running as root user")
28+
}
29+
2530
tmpDir := t.TempDir()
31+
2632
conf := &Config{
2733
Level: "debug",
2834
File: tmpDir + "/test.log",
@@ -33,9 +39,44 @@ func TestInitLogNoPermission(t *testing.T) {
3339
require.NoError(t, err)
3440
require.NotNil(t, logger)
3541

36-
err = os.Chmod(tmpDir, 0)
37-
require.NoError(t, err)
42+
// Directory permission denied
43+
require.NoError(t, os.Chmod(tmpDir, 0))
44+
_, _, err = InitAppLogger(conf)
45+
require.Contains(t, err.Error(), "permission denied")
46+
require.NoError(t, os.Chmod(tmpDir, 0755))
3847

48+
// Directory exists but doesn't allow file creation
49+
readOnlyDirPath := filepath.Join(tmpDir, "readonly-dir")
50+
require.NoError(t, os.Mkdir(readOnlyDirPath, 0755))
51+
require.NoError(t, os.Chmod(readOnlyDirPath, 0555)) // Read-only directory
52+
conf.File = readOnlyDirPath + "/test.log"
3953
_, _, err = InitAppLogger(conf)
4054
require.ErrorContains(t, err, "permission denied")
55+
require.NoError(t, os.Chmod(readOnlyDirPath, 0755))
56+
57+
// Using a directory as log file
58+
dirLogPath := filepath.Join(tmpDir, "dir-as-log")
59+
require.NoError(t, os.Mkdir(dirLogPath, 0755))
60+
conf.File = dirLogPath
61+
_, _, err = InitAppLogger(conf)
62+
require.ErrorContains(t, err, "can't use directory as log file name")
63+
64+
// File exists but is not writable
65+
filePath := filepath.Join(tmpDir, "readonly.log")
66+
file, err := os.Create(filePath)
67+
require.NoError(t, err)
68+
file.Close()
69+
require.NoError(t, os.Chmod(filePath, 0444))
70+
conf.File = filePath
71+
_, _, err = InitAppLogger(conf)
72+
require.ErrorContains(t, err, "permission denied")
73+
require.NoError(t, os.Chmod(filePath, 0644))
74+
75+
// Ensure parent directory is created successfully
76+
nestedPath := filepath.Join(tmpDir, "nested/path/to")
77+
conf.File = nestedPath + "/test.log"
78+
_, _, err = InitAppLogger(conf)
79+
require.NoError(t, err)
80+
_, err = os.Stat(nestedPath)
81+
require.NoError(t, err)
4182
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ require (
8787
github.com/pingcap/failpoint v0.0.0-20240528011301-b51a646c7c86
8888
github.com/pingcap/fn v1.0.0
8989
github.com/pingcap/kvproto v0.0.0-20240924080114-4a3e17f5e62d
90-
github.com/pingcap/log v1.1.1-0.20250424032633-85a82d016f84
90+
github.com/pingcap/log v1.1.1-0.20250514022801-14f3b4ca066e
9191
github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5
9292
github.com/pingcap/tidb/pkg/parser v0.0.0-20211011031125-9b13dc409c5e
9393
github.com/pingcap/tipb v0.0.0-20241022082558-0607513e7fa4

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -676,8 +676,8 @@ github.com/pingcap/kvproto v0.0.0-20240924080114-4a3e17f5e62d h1:vSdKTrF6kpcd56G
676676
github.com/pingcap/kvproto v0.0.0-20240924080114-4a3e17f5e62d/go.mod h1:rXxWk2UnwfUhLXha1jxRWPADw9eMZGWEWCg92Tgmb/8=
677677
github.com/pingcap/log v0.0.0-20210625125904-98ed8e2eb1c7/go.mod h1:8AanEdAHATuRurdGxZXBz0At+9avep+ub7U1AGYLIMM=
678678
github.com/pingcap/log v1.1.0/go.mod h1:DWQW5jICDR7UJh4HtxXSM20Churx4CQL0fwL/SoOSA4=
679-
github.com/pingcap/log v1.1.1-0.20250424032633-85a82d016f84 h1:ljnSbUq7LOkUtLtDXjTS5GanSWSAQ8pgVn7ucXMeMK8=
680-
github.com/pingcap/log v1.1.1-0.20250424032633-85a82d016f84/go.mod h1:ORfBOFp1eteu2odzsyaxI+b8TzJwgjwyQcGhI+9SfEA=
679+
github.com/pingcap/log v1.1.1-0.20250514022801-14f3b4ca066e h1:8AZZRv1Ox9FVGATVZBBgr6y1MrNBQFABEdovNJt1QIc=
680+
github.com/pingcap/log v1.1.1-0.20250514022801-14f3b4ca066e/go.mod h1:ORfBOFp1eteu2odzsyaxI+b8TzJwgjwyQcGhI+9SfEA=
681681
github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5 h1:T4pXRhBflzDeAhmOQHNPRRogMYxP13V7BkYw3ZsoSfE=
682682
github.com/pingcap/sysutil v1.0.1-0.20240311050922-ae81ee01f3a5/go.mod h1:rlimy0GcTvjiJqvD5mXTRr8O2eNZPBrcUgiWVYp9530=
683683
github.com/pingcap/tipb v0.0.0-20241022082558-0607513e7fa4 h1:wvaUybJT0fUReCDcFtV3CEvMuI9iu+G7IW72tbSlil4=

0 commit comments

Comments
 (0)