返回 DeepSeek-Reasonix
acl_windows_test.go
根目录 / internal / winaclresidue / acl_windows_test.go
1 //go:build windows
2
3 package winaclresidue
4
5 import (
6 "os"
7 "os/exec"
8 "path/filepath"
9 "testing"
10 )
11
12 // A dead run's marker is swept (deny removed, marker deleted); a marker whose
13 // owner is still alive is left for that owner.
14 func TestSweepStaleMarkersRemovesDeadRunResidueOnly(t *testing.T) {
15 t.Setenv("TEMP", t.TempDir())
16 userSID, err := currentProcessUserSIDString()
17 if err != nil {
18 t.Fatal(err)
19 }
20 dead := filepath.Join(t.TempDir(), "dead.txt")
21 live := filepath.Join(t.TempDir(), "live.txt")
22 for _, path := range []string{dead, live} {
23 if err := os.WriteFile(path, []byte("secret\n"), 0o600); err != nil {
24 t.Fatal(err)
25 }
26 installLegacyDeny(t, path, userSID)
27 if _, err := os.ReadFile(path); err == nil {
28 t.Fatalf("deny did not block reads of %s", path)
29 }
30 }
31 exited := exec.Command("cmd", "/c", "exit 0")
32 if err := exited.Run(); err != nil {
33 t.Fatal(err)
34 }
35 deadMarker := writeMarker(t, exited.ProcessState.Pid(), dead)
36 liveMarker := writeMarker(t, os.Getppid(), live)
37
38 SweepStaleMarkers()
39
40 if _, err := os.ReadFile(dead); err != nil {
41 t.Fatalf("dead run's deny survived the sweep: %v", err)
42 }
43 if _, err := os.Stat(deadMarker); !os.IsNotExist(err) {
44 t.Fatalf("dead marker survived the sweep: %v", err)
45 }
46 if _, err := os.ReadFile(live); err == nil {
47 t.Fatal("live owner's deny was removed")
48 }
49 if _, err := os.Stat(liveMarker); err != nil {
50 t.Fatalf("live marker was deleted: %v", err)
51 }
52 }
53
53 lines GO