Разработчики операционных систем любят спорить о том, какая из них надежнее и безопаснее. Особенно острыми эти споры становятся, когда речь заходит о применении системы в серьезном бизнесе или не менее серьезных государственных организациях — ставки в этих играх большие и требования — соответствующие. Медленно подбираясь к десктопу простого пользователя, Linux уже довольно уверенно себя чувствует в корпоративном и госсекторе, а в числе достоинств системы часто называют те самые «надежность и безопасность». Что же стоит за этими словами?
Традиции UNIX
История операционной системы UNIX насчитывает уже более тридцати лет. Нет ничего удивительного, что ее коммерческие и свободные реализации используются в том числе в военных и промышленных системах.
Модель безопасности UNIX довольно проста. В основе ее лежит дискреционный механизм доступа — каждый объект (например, файл) в системе имеет владельца, который и устанавливает права доступа к объекту. Сами пользователи в системе фигурируют в виде процессов — программ, запущенных от их имени. Так как в UNIX даже устройства представляются в виде файлов, достаточно для каждого из них хранить владельца и права на использование этого файла другими пользователями системы.
Но в одной системе могут работать тысячи пользователей (такая ситуация встречается и сейчас — на мэйнфреймах и крупных серверах), и тогда списки доступа (Access Control List, ACL) для каждого файла разрастутся до гигантских размеров. Частично эту проблему решает добавление групп пользователей, но их число тоже может быть очень большим. Создатели UNIX придумали более элегантный подход: для каждого файла задаются три группы прав — права владельца, права группы владельца[Кроме основного владельца, у файла может быть группа постоянных пользователей. Например, файлы устройств обычно принадлежат определенным группам: audio — устройства вывода звука, cdrw — записи дисков и т. п. Чтобы иметь доступ к этим функциям, пользователь должен состоять в соответствующей группе] и права для всех остальных. Таким образом, все права на файл занимают лишь несколько байт.
В UNIX существуют три основных права доступа: чтение, запись и «исполнение». Причем последнее трактуется по-разному для разных типов файлов. Для «обычных» файлов оно определяет возможность запуска содержащейся в нем программы[В UNIX исполняемые файлы могут иметь не только любое расширение (часто у них вообще нет точки в имени), но и содержимое — это может быть откомпилированная для данной архитектуры программа или скрипт на любом из поддерживаемых языков программирования], а для директории — право войти в нее.