стала фактическим стандартом современных операционных
файла. Схема авторизации доступа, примененная в ОС UNIX,
настолько проста и удобна и одновременно настолько мощна, что
стала фактическим стандартом современных операционных систем (не
претендующих на качества систем с многоуровневой защитой).
С каждым выполняемым процессом в ОС UNIX связываются реальный
идентификатор пользователя и действующий идентификатор
пользователя. Эти идентификаторы устанавливаются с помощью
системного вызова setuid, который можно выполнять только в режиме
суперпользователя (администратора системы). Аналогично, с каждым
процессом связываются два идентификатора группы пользователей -
реальный и действующий. Эти идентификаторы устанавливаются
привилегированным системным вызовом setgid.
При входе пользователя в систему программа login проверяет, что
пользователь зарегистрирован в систему и знает правильный пароль
(если он установлен), образует новый процесс и запускает в нем
требуемый для данного пользователя shell. Но перед этим login
устанавливает для вновь созданного процесса идентификаторы
пользователя и группы, используя информацию, хранящуюся в файлах
/etc/passwd и /etc/group. После того, как с процессом связаны
идентификаторы пользователя и группы, для этого процесса начинают
действовать ограничения для доступа к файлам. Процесс может
получить доступ к файлу или выполнить его (если файл содержит
выполняемую программу) только в том случае, если хранящиеся при
файле ограничения доступа позволяют это сделать. Связанные с
процессом идентификаторы передаются создаваемым им процессам,
распространяя на них те же ограничения. Однако в некоторых
случаях процесс может изменить свои права с использованием
системных вызовов setuid и setgid, а иногда система может
изменить права доступа процесса автоматически.
Рассмотрим, например, следующую ситуацию. В файл /etc/passwd
запрещена запись всем, кроме суперпользователя (суперпользователь
может писать в любой файл). Этот файл, помимо прочего, содержит
пароли пользователей, и каждому пользователю разрешается изменять
Содержание Назад Вперед