Access Denied — ошибка отказа в доступе¶
Access Denied (от англ. «доступ запрещён») — сообщение об ошибке, информирующее пользователя или программный процесс о том, что в доступе к запрашиваемому ресурсу отказано. Ресурсом может быть файл, каталог, веб-страница, база данных, сетевой сервис или аппаратное устройство. Ошибка не является сбоем в строгом смысле: система корректно обработала запрос и вернула отказ в соответствии с заданными правилами доступа.
¶Происхождение термина
Фраза «access denied» утвердилась в информатике в 1970-е — 1980-е годы вместе с развитием многопользовательских операционных систем и сетевых протоколов. В UNIX-подобных системах аналогом служит сообщение Permission denied, в Windows — «Отказано в доступе» или код ошибки ERROR_ACCESS_DENIED (код 5). В HTTP-протоколе аналогом является статус 403 Forbidden.
¶Основные причины возникновения
Отказ в доступе может вызываться различными факторами:
- Недостаток прав пользователя. Наиболее частая причина: учётная запись не обладает правами на чтение, запись или выполнение запрашиваемого объекта.
- Неверные учётные данные. Неправильный логин, пароль, истёкший или отозванный токен авторизации.
- Ограничения файловой системы. В UNIX-правах доступа (chmod) объект может быть закрыт для группы или для «прочих» (others).
- Политики безопасности. Брандмауэр, система обнаружения вторжений или групповая политика Windows могут блокировать обращение.
- Географические и юридические ограничения. Сервер может запрещать доступ с определённых IP-адресов, из отдельных стран или регионов.
- Ограничения аккаунта. Платная подписка, превышение квоты запросов, блокировка администратором.
¶Access Denied в операционных системах
¶Windows
В Windows отказ в доступе формируется подсистемой безопасности и возвращается приложению как код ERROR_ACCESS_DENIED. При попытке открыть защищённый файл проводник отображает диалог «Отказано в доступе». Причиной может быть ACL (список управления доступом), наследуемый от родительского каталога, или защита системных файлов (Windows Resource Protection). Обход блокировки возможен только при наличии прав администратора и явном изменении владельца объекта.
¶Linux и UNIX
В UNIX-системах права определяются тройкой символов для владельца, группы и остальных пользователей (например, chmod 644). При обращении к файлу с недостаточными правами ядро возвращает код ошибки EACCES, а shell выводит bash: file: Permission denied. Суперпользователь (root) не подвержен этим ограничениям, что является источником известного высказывания «root не знает отказа».
¶Access Denied в вебе
В HTTP-протоколе отказ в доступе передаётся через статус-код 403 Forbidden. Сервер понимает запрос, но отказывается его выполнять. Типичные причины: отсутствие авторизации, неверный HMAC-подписанный URL, запрет по IP, отсутствие файла index.html в каталоге при запрещённом листинге.
Код 403 часто путают с 401 Unauthorized. Разница заключается в том, что 401 означает «необходима авторизация» и сопровождается заголовком WWW-Authenticate, а 403 — «авторизация не поможет, доступ запрещён в принципе».
Веб-серверы настраивают формат ответа индивидуально. Nginx по умолчанию отдаёт страницу 403 Forbidden, Apache — 403 Forbidden со стандартной страницей ошибки. Крупные платформы (Google, Яндекс, социальные сети) формируют собственные страницы отказа, иногда с капчей для борьбы с ботами.
¶Access Denied в программной разработке
В языках программирования отказ в доступе обычно передаётся исключениями:
| Язык/платформа | Исключение или код |
|---|---|
| Java | java.security.AccessControlException, SecurityException |
| C# / .NET | System.UnauthorizedAccessException |
| Python | PermissionError (подкласс OSError) |
| Node.js | Error: EACCES: permission denied |
| POSIX C | errno == EACCES |
Разработчики обязаны обрабатывать эти ошибки, чтобы приложение не падало при попытке записи в защищённый каталог или чтения системного файла.
¶Способы устранения
Для пользователя типичные действия включают:
- Проверку прав на объект (в Windows — вкладка «Безопасность», в Linux — команда
ls -l). - Запуск программы от имени администратора или под учётной записью с достаточными правами.
- Проверку введённых учётных данных и срока действия токена.
- Обращение к администратору ресурса для выдачи разрешений.
¶См. также
- HTTP 403 Forbidden
- Контроль доступа
- Модель Bell — Лападулы
- Контрольные списки доступа
¶Историческое примечание
В ранних мейнфреймах IBM отказ в доступе передавался через коды ABEND (abnormal end), а терминология «access denied» закрепилась позже, с распространением персональных компьютеров и локальных сетей. В русскоязычной документации Windows 95/98 использовался перевод «Доступ запрещён», который с тех пор стал устойчивым эквивалентом.
