Роббинс Арнольд
Шрифт:
• После
Упражнения
1. Реализуйте
2. Если у вас не установлен GNU/Linux, запустите на своей системе
3. Реализуйте функции System V Release 3
4. Потренируйте свои навыки в жонглировании битами. В предположении, что сигнал 0 отсутствует и что имеется не более 31 сигналов, предусмотрите
5. Еще немного потренируйте свои навыки жонглирования битами. Повторите предыдущее упражнение, на этот раз предположив, что наибольшим сигналом является 42.
6. Теперь, когда вы сделали предыдущие два упражнения, найдите
7. В разделе 10.7 «Сигналы для межпроцессного взаимодействия» мы упомянули, что код изделия должен работать с начальной маской сигналов процесса, добавляя и удаляя блокируемые сигналы в вызове
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 «Сигналы».
Наконец, особым случаем является суперпользователь,