Linux программирование в примерах
Шрифт:
8. Напишите свою собственную версию команды
Если сигнал не указан, программа должна посылать
9. Как вы думаете, почему в современных оболочках, таких, как Bash и ksh93,
10. (Трудное) Реализуйте
11. Поэкспериментируйте
12. Попробуйте заставить
Глава 11
Права доступа и ID пользователей и групп
Linux, вслед за Unix, является многопользовательской системой. В отличие от большинства операционных систем для персональных компьютеров, [114] в которых имеется лишь один пользователь и в которых, кто бы ни находился перед компьютером, он имеет полный контроль, Linux и Unix различают файлы и процессы по владельцам и группам, которым они принадлежат. В данной главе мы исследуем проверку прав доступа и рассмотрим API для получения и установки идентификаторов владельцев и групп.
114
MacOS X и Windows XP обе являются многопользовательскими системами, но это довольно недавние разработки — Примеч. автора.
11.1. Проверка прав доступа
Как мы видели в разделе 5.4.2 «Получение информации о файлах», файловая система хранит идентификаторы владельца и группы файла в виде числовых значений; это типы
У каждого процесса есть несколько связанных с ним идентификаторов пользователя и группы. Для проверки прав доступа в качестве упрощения используется один определенный UID и GID; когда UID процесса совпадает с UID файла, биты прав доступа пользователя файла диктуют, что может сделать процесс с файлом. Если они не совпадают, система проверяет GID процесса с GID файла; при совпадении используются права доступа группы; в противном случае, используются права доступа для «остальных».
Помимо файлов, UID определяет, как один процесс может повлиять на другой путем посылки сигналов. Сигналы описаны в главе 10 «Сигналы».
Наконец, особым случаем является суперпользователь,
11.1.1. Действительные и эффективные ID
Номера UID и GID подобны персональным удостоверениям личности. Иногда вам может понадобиться более
115
Хотя в Соединенных Штатах нет официальных удостоверений личности, во многих странах они имеются — Примеч. автора.
Действительный ID пользователя
UID пользователя, породившего процесс.
Эффективный ID пользователя
UID, использующийся при большинстве проверок прав доступа. В большинстве случаев эффективный и действительный UID являются одним и тем же. Эффективный UID может отличаться от действительного при запуске, если установлен бит setuid файла исполняемой программы и файл не принадлежит пользователю, запускающему программу. (Вскоре будут дополнительные сведения.)
Сохраненный set-user ID
Первоначальный эффективный UID при запуске программы (после выполнения exec.) Имеет значение при проверке прав доступа, когда процессу нужно менять действительный и эффективный UID в ходе работы. Эта концепция пришла из System V.
Действительный ID группы
GID пользователя, создавшего процесс, аналогично действительному UID.
Эффективный ID группы
GID, использующийся для проверки прав доступа, аналогично эффективному GID.
Сохраненный set-group ID
Первоначальный эффективный GID при запуске программы, аналогично сохраненному set-user ID.
Набор дополнительных групп
4.2 BSD ввело понятие набора групп. Помимо действительного и эффективного GID. у каждого процесса есть некоторый набор дополнительных групп, которым он принадлежит в одно и то же время. Таким образом, когда проверка прав доступа осуществляется для группы файла, ядро проверяет не только эффективный GID, но также и все GID в наборе групп.
Каждый процесс может получить все из этих значений. Обычный (не принадлежащий суперпользователю) процесс может переключать свои действительные и эффективные ID пользователя и группы. Процесс
11.1.2. Биты Setuid и Setgid
Биты setuid и setgid [116] в правах доступа к файлу заставляют процесс принять эффективный UID или GID, который отличается от действительного. Эти биты накладываются на файл вручную с помощью команды
116
Денис Ричи (Dennis Ritchie), создатель С и соавтор Unix, получил патент для бита setuid: Protection of Data File Contents (Защита содержимого файла данных), номер патента США 4135240. См.
Газлайтер. Том 19
19. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Собрание сочинений. Том 44
Научно-образовательная:
философия
рейтинг книги
Марвуд и Ловетт. Компиляция
Детективы:
исторические детективы
рейтинг книги
Чужак
1. Лабиринты Ехо
Фантастика:
фэнтези
рейтинг книги
Свободное радио Альбемута (сборник)
Шедевры фантастики
Фантастика:
научная фантастика
рейтинг книги
#9 Печать пожирателя
9. Пожиратель
Фантастика:
аниме
сказочная фантастика
попаданцы
рейтинг книги
Точка Бифуркации XI
11. ТБ
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Вечный слушатель
2013. Антология поэзии
Поэзия:
поэзия
рейтинг книги
Вечный. Книга I
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
рейтинг книги
Будущее, XXII век. Прогрессоры
Гиганты фантастики
Фантастика:
научная фантастика
рейтинг книги
Загадочная русская душа на фоне мировой еврейской истории
Научно-образовательная:
история
рейтинг книги