Repository navigation
Scaffold permissionreset-smb, a read-only SMB-native tool for FlashArray - #38
Conversation
|
Candidate: Environment: one FlashArray over SMB, read from a Windows Server 2022 client by an elevated domain account. The fixture is a 13-object tree (directories and files, 5 with audit ACEs, one protected DACL) built in a fresh directory and deleted afterwards. It's the same fixture as the PR #35 qualification: the descriptors before the run were byte-identical to that run's on 13 of 13 objects. Mapped principals only, no array configuration change, not a timing run. Reference: a separate raw read with Passed
Failed
Defects to fix (none affect read accuracy)
What this does and doesn't show: |
|
This follows the Candidate: Environment: the same as the Passed
All three defects found on Limits
Detailed evidence is kept internally. |
Starts the smb/ tree named in the FlashArray SMB decision record: a .NET 8 solution that reads and decodes security descriptors over SMB and validates plans. It writes nothing; the repair waits on the record's open questions. - inspect: raw descriptors as JSON lines (owner, group, control flags, DACL/SACL ACEs, base64 bytes), opened with backup intent, no reparse follow. - plan: validates and summarizes a plan file; Go-compatible glob matching and rule selection. - Unit tests, and an smb-windows CI job that builds, tests and smoke-runs it on a hosted Windows runner. - The decision record's status marks sections 4, 5 and 7 started. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The scan reads tools/public-scan/denylist.txt, usually a symlink to a private checkout. Untracked, it was one git add -A from being published. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The smb-windows smoke step ran an exe nothing had built: dotnet test
builds only what the tests reference. CI now builds the solution first,
tests with --no-build, and checks the exe exists before running it.
The first array read of inspect passed on read fidelity (13/13 with and
without the SACL) and found three error-path defects, fixed here:
- A missing SeBackupPrivilege or SeSecurityPrivilege escaped as an
unhandled Win32Exception. inspect now prints the privilege and code on
stderr, reads nothing and exits 1.
- A failed read's error was only the step name ("open"). It now keeps
the system's reason, and win32_error carries the code.
- A failed read reported sacl_read: true. A record with no descriptor
now has no sacl_read.
inspect reads through an IDescriptorReader seam, so the CLI's records
and exit codes are tested on any OS with a fake reader. The public
summary of the array run is in benchmarks/qual-smb-inspect-20261109/;
the error cases still need a rerun on this build.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
e690ee2 to
0ed9d8d
Compare
Starts the
smb/tree proposed indocs/decision-flasharray-smb-20261107.md(sections 4, 5, 7).Pre-release scaffold — writes nothing. It reads and decodes descriptors and validates plans; repair waits on the decision record's section 8 questions.
inspect: raw descriptors as JSON lines (owner/group SIDs, control flags, DACL/SACL ACEs with flags, base64 bytes); backup intent, reparse points not followed. A failed path gets a record witherror(step + system reason) andwin32_error; a missing privilege exits 1 with a message.plan: validates and summarizes a plan file, with Go-compatible glob matching and rule selection.smb/tests/), including the CLI's records and exit codes through a fake descriptor reader, and a newsmb-windowsCI job that builds, tests and smoke-runs the binary onwindows-2022..gitignorecovers the private public-scan denylist.CLAUDE.mdarchitecture entry; decision-record status updated.Verification
Head is
0ed9d8d:e690ee2rebased ontomainat2ebb967. The rebase changed only the rootCLAUDE.md(main replaced the architecture tree, so thesmb/entry is now a shortpermissionreset-smbsection).smb/and the CI job are byte-identical toe690ee2.Offline, on
0ed9d8dorigin/main..HEADcommits): clean.go test ./...: pass.Hardware, lab FlashArray, on
e690ee2(20bf2c3 run,benchmarks/qual-smb-inspect-20261109/RESULTS.md, and thee690ee2rerun comment below)errorrecord andwin32_error. Missing SeBackup/SeSecurity privilege: exit 1 with a message and no stack trace.0ed9d8d: the rebase touched nosmb/file, so the descriptor path and the binary's sources are unchanged. A0ed9d8dbuild is still a different artifact from the qualified one, and its checksum hasn't been recorded.Known, pre-existing: xUnit skips some
GoGlobTestsvectors as duplicate test IDs (present on20bf2c3too); not addressed here.🤖 Generated with Claude Code