Сергей Яремчук
Операционная система UNIX с самого начала задумывалась простой по устройству
и безопасной по содержанию. Простота системы заключается в том, что все, что не
видит глаз, является файлами, правда разными по содержанию, но пользователь не видит
абсолютно никакой разницы между обычным текстовым файлом и файлом,
представляющим собой жесткий диск. Жизнь в систему вдыхают процессы.
Пользователи имеют определенные права доступа, на
основании которых решается вопрос о том, может ли процесс, имеющий определенные
атрибуты (владелец, группа), открыть файл для работы с ним. Но такое упрощение
имеет и свои видимые недостатки. Так, важные системные файлы получаются
фактически не защищенными. Почему? Как правило, в грамотно настроенной системе
такие файлы может изменять и удалять только суперпользователь. Но хорошо, когда
это именно наш системный администратор, а если нет? Я считаю, что взломать
аккаунт root в принципе возможно, но есть гораздо более эффективный и быстрый
способ получить доступ к системным файлам. Так, известно, что большинство
демонов (программ, выполняющих запросы пользователей) имеют установленный
SUID/SGID-бит. Сущность его заключается в том, чтобы придать процессу,
запущенному от имени обычного пользователя, несколько большие права в системе.
В качестве примера рассмотрим утилиту passwd,
которая позволяет изменить пользователю свой пароль. Все учетные записи и
пароли (в зашифрованном виде) хранятся в файлах /etc/passwd и /etc/shadow. Если
предоставить право каждому пользователю самолично вносить изменения в эти файлы
напрямую, то можете представить, что это будет. Естественно, вам никто и не
даст такое право.