Книга: Сетевые средства Linux
Влияние ошибок на выполнение программ
Влияние ошибок на выполнение программ
В программном обеспечении встречаются различные ошибки, которые могут проявляться по-разному. Наличие ошибок может привести к повреждению данных или программного кода, а может изменить поведение программы. Некоторые ошибки влияют на защиту системы. Встречаются такие, которые предоставляют пользователю возможность вносить изменения в любые файлы, расположенные в различных каталогах (в том числе и в файлы, определяющие конфигурацию системы), либо запускать программы от имени других пользователей. По сути, подобные ошибки наделяют обычного пользователя привилегиями суперпользователя.
В серверах, как и в любых других программах, также могут встречаться ошибки. Однако, в отличие от обычных программ, ошибки в серверах могут повлечь за собой более тяжкие последствия для системы, так как серверы доступны всем пользователям сети. Предположим, что обычная программа, например man
, содержит ошибку, в результате которой обычный пользователь может получить неограниченные полномочия. Если локальные пользователи заслуживают доверия, а у внешних пользователей нет доступа к ресурсам этого компьютера, система не пострадает. (Такое предположение не всегда оказывается верным, поэтому замеченные ошибки надо устранить как можно скорее). Если же Web-сервер, доступный из Internet, содержит ошибку, позволяющую проникнуть в систему, ею сможет воспользоваться любой желающий.
Проблема усугубляется тем, что многие серверы запускаются от имени пользователя root
. Если программа (не обязательно сервер) запускается с полномочиями обычного пользователя, возможности злоумышленника, воспользовавшегося недостатками в защите, ограничены. Например, такая программа не позволит взломщику изменить содержимое файла /etc/passwd
. Если же программа запускается от имени суперпользователя, возможности взломщика резко возрастают. В частности, он может создать новую учетную запись и пользоваться ею в дальнейшем. Привилегии root
необходимы многим серверам для нормальной работы. Например, права пользователя root
нужны серверам регистрации. Более того, чтобы принимать обращения через порт с номером ниже 1024, программа должна быть запущена от имени суперпользователя. (Полномочия root
имеет суперсервер, но программы, запускаемые с его помощью, обычно выполняются с более низкими полномочиями.)
В результате становится ясно, насколько важно вовремя обновить программы, реализующие серверы. Не все дополнительные модули предназначены для исправления ошибок, некоторые из них призваны расширить возможности программы. Если эти возможности вам не нужны, устанавливать такой модуль не обязательно. Если же вы узнали о появлении дополнения к системе, устраняющего недостаток в ее защите, установите его как можно скорее.
- 5 критических ошибок!
- 8.2. Языки программирования Виды программирований
- 1.1. Введение в объектно-ориентированное программирование
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Перехват ошибок
- СТРУКТУРА ПРОСТОЙ ПРОГРАММЫ
- Обработка перехваченных ошибок
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- 6.2. Типичные ошибки при проведении программ продвижения и варианты их устранения
- Системное программное обеспечение
- Язык программирования Python
- 1.2.5. Пример программы