{"record":{"id":"6f8e9bc8d9c34970","repo":"TechnitiumSoftware/DnsServer","slug":"failed-to-find-dns-administrators-group-auth-co","errorCode":null,"errorMessage":"Failed to find 'DNS Administrators' group: auth.config file is probably corrupt.","messagePattern":"Failed to find 'DNS Administrators' group: auth\\.config file is probably corrupt\\.","errorType":"exception","errorClass":"DnsWebServiceException","httpStatus":null,"severity":"critical","filePath":"DnsServerCore/DnsWebService.cs","lineNumber":460,"sourceCode":"\n            //remove ghost permissions\n            foreach (KeyValuePair<string, Permission> subItemPermission in subItemPermissions)\n            {\n                string zoneName = subItemPermission.Key;\n\n                if (_dnsServer.AuthZoneManager.GetAuthZoneInfo(zoneName) is null)\n                    permission.RemoveAllSubItemPermissions(zoneName); //no such zone exists; remove permissions\n            }\n\n            //add missing admin permissions\n            IReadOnlyList<AuthZoneInfo> zones = _dnsServer.AuthZoneManager.GetAllZones();\n            Group admins = _authManager.GetGroup(Group.ADMINISTRATORS);\n            if (admins is null)\n                throw new DnsWebServiceException(\"Failed to find 'Administrators' group: auth.config file is probably corrupt.\");\n\n            Group dnsAdmins = _authManager.GetGroup(Group.DNS_ADMINISTRATORS);\n            if (dnsAdmins is null)\n                throw new DnsWebServiceException(\"Failed to find 'DNS Administrators' group: auth.config file is probably corrupt.\");\n\n            foreach (AuthZoneInfo zone in zones)\n            {\n                _authManager.SetPermission(PermissionSection.Zones, zone.Name, admins, PermissionFlag.ViewModifyDelete);\n                _authManager.SetPermission(PermissionSection.Zones, zone.Name, dnsAdmins, PermissionFlag.ViewModifyDelete);\n            }\n\n            _authManager.SaveConfigFile();\n        }\n\n        private void ReadConfigFrom(Stream s)\n        {\n            if (Encoding.ASCII.GetString(s.ReadExactly(2)) != \"WC\") //format\n                throw new InvalidDataException(\"Web Service config file format is invalid.\");\n\n            BinaryReader bR = new BinaryReader(s);\n\n            int version = bR.ReadByte();","sourceCodeStart":442,"sourceCodeEnd":478,"githubUrl":"https://github.com/TechnitiumSoftware/DnsServer/blob/d0484b6c1e7439cdc53d67d81e9c876cda2ad756/DnsServerCore/DnsWebService.cs#L442-L478","documentation":"Sibling to the Administrators check: thrown in InspectAndFixZonePermissions when _authManager.GetGroup(Group.DNS_ADMINISTRATORS) returns null. The DNS Administrators built-in group is required so the server can grant ViewModifyDelete on every zone to DNS admins. Missing it means auth.config is corrupt.","triggerScenarios":"InspectAndFixZonePermissions runs and the built-in 'DNS Administrators' group is absent from auth.config.","commonSituations":"Same as Administrators: restored/edited/truncated auth.config, version mismatch, interrupted write, partial migration.","solutions":["Restore auth.config from a backup that retains both built-in groups.","Delete auth.config and restart the service to regenerate default groups, then reconfigure.","Recreate the 'DNS Administrators' group via the auth API before permissions reconciliation runs."],"exampleFix":"null","handlingStrategy":"try-catch","validationCode":"if (_authManager.GetGroup(Group.DNS_ADMINISTRATORS) is null)\n{\n    // restore defaults or recreate the group\n}","typeGuard":"null","tryCatchPattern":"try { _dnsWebService.Start(); }\ncatch (DnsWebServiceException ex) when (ex.Message.Contains(\"DNS Administrators\"))\n{\n    // restore auth.config / regenerate defaults\n}","preventionTips":["Keep auth.config backups.","Never remove the built-in DNS Administrators group.","Re-validate built-in groups after any migration."],"tags":["dns-server","technitium","auth","configuration","config-corruption","permissions","csharp"],"backgroundTag":null,"analyzedSha":"d0484b6c1e7439cdc53d67d81e9c876cda2ad756","analyzedAt":"2026-08-13T22:57:35.508Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}