Организация контроля доступа в ОС UNIX

В ОС UNIX права доступа к файлу или каталогу определяются для трех субъек­тов:

владельца файла (идентификатор User ID, UID);

членов группы, к которой принадлежит владелец (Group ID, GID);

всех остальных пользователей системы.

С учетом того что в UNIX определены всего три операции над файлами и ката­логами (чтение, запись, выполнение), характеристики безопасности файла вклю­чают девять признаков, задающих возможность выполнения каж­дой из трех операций для каждого из трех субъектов доступа. Например, если владелец фай­ла разрешил себе выполнение всех трех операций, для членов группы – чтение и выполнение, а для всех остальных пользователей – только выполнение, то де­вять характеристик безопас­ности файла выглядят следующим образом:

 

User Group Other

rwx r-х r--

 

Здесь r, w и х обозначают операции чтения, записи и выполнения соот­ветственно. Именно в таком виде выводит информацию о правах доступа к файлам команда просмотра содержимого каталога (ls -la). Суперпользователю UNIX все виды досту­па позволены всегда, поэтому его идентификатор (он имеет значение 0) не фигу­рирует в списках управления доступом.

С каждым процессом UNIX связаны два идентификатора: пользователя, от име­ни которого был создан этот процесс, и группы, к которой принадле­жит данный пользователь. Эти идентификаторы носят название реальных идентификаторов пользователя (Real User ID, RUID) и реальных идентифи­каторов группы (Real Group ID, RGID). Однако при проверке прав доступа к файлу используются не эти идентификаторы, а так называемые эффектив­ные идентификаторы пользо­вателя (Effective User ID, EUID) и эффективные идентификаторы группы (Effective Group ID, EGID) (рис. 5.18).

Введение эффективных идентификаторов позволяет процессу выступать в неко­торых случаях от имени пользователя и группы, отличных от тех, ко­торые ему досталось при порождении. В исходном состоянии эффективные идентификаторы совпадают с реальными.

В ОС UNIX случаи, когда процесс выполняет системный вызов ехес за­пуска приложения, хра­нящегося в некотором файле, связаны с заменой про­цессом исполняемо­го кода. В рамках данного процесса начинает выпол­няться новый код, и если в характеристиках безопасности этого файла ука­заны признаки разрешения смены идентификаторов пользователя и группы, то происходит смена эффективных иден­тификаторов процесса. Файл имеет два признака разрешения смены идентифи­катора – Set User ID on execution (SUID) и Set Group ID on execution (SGID).