Концепция безопасности в ОС ЮНИКС, пользователи и группы.

Как и в любой многопользовательской системе, в операционных системах Unix, есть механизм управления доступом пользователей к тем или иным ресурсам системы ( процессорное время, память, файлы, директории и прочее ). Основными участниками данного механизма являются: Пользователь ( user ), Группа ( group ), Другие ( Other ), основными правами доступа в Unix, являются:

· права доступа на чтение;

· права доступа на запись;

· права доступа на выполнение;

Соответственно, в Unix, права доступа и участники, сгруппированы три по три, read/write/execution для user/group/other.Кроме вышеупомянутых прав доступа, операционные системы Unix, поддерживает "файловые флаги", для обеспечения дополнительного уровня защиты, контроля и управления объектами системы. Например, с помощью флагов, можно запретить удаление файла, даже пользователю root.Вообще, правильней говорить не о правах пользователей, на тот или иной файл/директорию, а о правах процессов, так как все манипуляции с файлами ( создание, чтение, изменение, удаление ), производятся с помощью какой-то программы, например текстового редактора, который в запущенном виде, собственно и является процессом.Каждому пользователю системы, присваиваются идентификаторы, UserID ( идентификатор пользователя ) и GroupID ( идентификатор группы ), именно по ним операционная система определяет владельца и группу для того или иного объекта системы. Символические имена назначаются исключительно для удобства чтения, пользователями.Каждый процесс в операционной системе Unix, имеет не два, а четыре идентификатора, это, реальный UserID ( UID ) и эффективный UserID ( UID ) а так-же реальный и эффективный идентификатор группы GroupID ( GID ).
Реальный UserID ( Реальный GroupID ) - реальные номера применяются для учета использования системных ресурсов.
Эффективный UserID ( Эффективный GroupID ) - новый идентификатор, полученный процессом уже во время выполнения, применяются для определения прав доступа.Процессы запущенные автоматически ( например при старте системы ), так-же получают UserID, какой именно, определяется запускающей программой ( cron, inetd и т.д. ), в обычных случаях, UserID наследуется от родительского процесса. Некоторые процессы - "родители", могут присваивать, дочернему процессу - "потомку", UserID, не совпадающий со своим.Иногда, запущенный процесс, может во время выполнения, менять свои идентификаторы. Это происходит, когда в правах доступа на файл, установлены дополнительные биты, SUID ( Set user ID - бит смены идентификатора пользователя ) и SGID ( Set group ID - бит смены идентификатора группы ). Когда пользователь или процесс запускает файл, у которого установлен один из этих битов, процессу, временно присваиваются права владельца данного файла ( а не того, кто его запускает ). Таким образом, обычный пользователь, может выполнять команды от имени пользователя root.