| Предыдущий | Следующий |
| ELIBSCN | EBADFD |
ENEEDAUTH
ENEEDAUTH — Darwin errno для операции, которая не может продолжиться, пока не станет доступен аутентификатор. В традиции BSD errno код означал билет аутентификации, необходимый до монтирования защищённой файловой системы NFS. Современная документация Apple по константам ошибок сопоставляет его с needAuthenticator, а FSKit использует его, когда контейнер файловой системы требует аутентификации.
Это состояние невыполненной предпосылки, а не доказательство недействительности предоставленных учётных данных. Компонент, вернувший код, должен знать, что считается аутентификатором и как его получить. Ему может потребоваться запустить процесс аутентификации, выбрать идентификатор, получить билет или запросить действие пользователя; изменение обычных битов режима POSIX не относится к проблеме, если только тот же API явно не связывает эти механизмы.
Разделяйте состояния аутентификации
ENEEDAUTH: для требуемого этапа нет пригодного аутентификатора.EAUTH: аутентификация была предпринята, но завершилась ошибкой или была отклонена.EACCES: в доступе отказано; сам по себе этот код не показывает, что запрашивался аутентификатор.
Целевые шаги диагностики
- Определите точный API, вернувший
ENEEDAUTH, и допускает ли он интерактивную аутентификацию. Демону, элементу входа или команде без сеанса графического интерфейса может требоваться иной механизм передачи, чем приложению на переднем плане. - Запишите ресурс, поставщика, контекст выбора идентификатора и режим вызывающей стороны, но исключите из журналов материалы учётных данных. Важно различать состояния «аутентификатор не запрашивался», «аутентификатор был недоступен» и «аутентификатор предоставлен и отклонён».
- Для защищённых сетевых монтирований сохраняйте вместе с ошибкой идентификаторы сервера и экспорта. Получение учётных данных для похожей по имени, но другой службы не удовлетворяет исходному запросу монтирования.
- Повторяйте операцию только после того, как компонент сможет получить или принять требуемый аутентификатор. Слепой повтор того же неинтерактивного вызова обычно сохраняет невыполненную предпосылку.
Ссылки
- Apple XNU: определения errno Darwin
- Apple FSKit: состояния контейнеров и ошибки аутентификации
- Apple: использование констант errno в Swift
- Руководство BSD по errno: историческая семантика EAUTH и ENEEDAUTH
Нужно найти другой код? Найти другой код состояния или ошибки.