Rhino version: 8 SR34 (8.34.26223.11001, 2026-08-11), Windows**
Summary:**
When overwriting an existing .3dm file, Rhino writes the new file with an empty DACL (not a NULL DACL — an explicitly empty access control list, meaning access is denied to everyone, including the file owner). The previous, correctly-permissioned version of the file is renamed to .3dmbak and retains its correct, inherited ACL. Only the newly written file is affected.
Steps to reproduce (100% reproducible on my system):
- Create a folder with standard NTFS inheritance (e.g. Administrators, SYSTEM, Users, Authenticated Users — all inherited from parent).
- In Rhino: create a new file, add an object, Save As into that folder (e.g.
Test.3dm).
→ File’s ACL at this point: correct, inherited (all ACEs show the “Inherited” flag). - Close Rhino completely.
- Re-open
Test.3dm. - Press Ctrl+S (plain overwrite save, no content changes needed).
- Close Rhino.
- Result:
Test.3dm→ DACL is empty.Get-Aclshows no Access entries; SDDL isD:AIwith no ACEs. File becomes inaccessible (Access Denied) even to the original owner.Test.3dmbak→ correct, inherited ACL is retained (equivalent toD:(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;...;BU)(A;ID;...;AU)).
Additional observation: If instead an externally created .3dm file (e.g. copied from elsewhere, never previously saved by this Rhino installation) is opened and overwritten, the ACL is not wiped — but two side effects still occur: the file owner changes to the currently logged-in user, and the “Inherited” flag is lost on all ACEs (they become explicit entries with identical permissions instead of inherited ones). This suggests Rhino’s save routine does not properly preserve or re-establish the security descriptor when writing the replacement file (e.g. not using ReplaceFile with ownership/ACL preservation, and not applying inheritance from the target folder for newly created files) — and the total ACL loss seen with a file previously created via Rhino’s own “Save As” may be an extreme case of the same underlying issue.
Impact: After the second save, the file becomes inaccessible to all users, including the original creator/owner. Recovery requires an administrator to take ownership (takeown) and manually rebuild the ACL, or restoring from the .3dmbak file.
Test environment: Windows, local NTFS drive (not OneDrive/cloud-synced), local user account with local administrator rights.