Мегаобучалка Главная | О нас | Обратная связь


Идентификаторы пользователя и группы. (реальные и эффективные)



2019-07-04 268 Обсуждений (0)
Идентификаторы пользователя и группы. (реальные и эффективные) 0.00 из 5.00 0 оценок




 

Помимо PID и PPID процесс имеет еще ряд идентификационных номеров:

 

           * реальный идентификатор пользователя (a real user ID)

           * реальный идентификатор  группы (a real group ID)

           * эффективный идентификатор пользователя (effective user ID)

           * эффективный идентификатор группы effective group ID.

 

Реальный идентификатор пользователя это целое число показывающее владельца процесса. Реальный идентификатор  группы это целое число показывающее группу к которой принадлежал пользователь создатель процесса. Комманда id показывает оба этих значения.

           %id

       uid=513(torry) gid=20(users)

       % grep 513 /etc/passwd

       torry:EqqHevH:513:20:Torry Ho,[44MY],474-1969 ,:/home/torry:/usr/bin/csh

 

Эффективный идентификатор пользователя и группы процесса позволяет процессу получать доступ к файлам или выполнять программы как пользователь имеющим ID равным эффективному. Обычно реальный и эффективные идентификаторы процессов совпадают, но не всегда. Когда эффективный идентификатор равен нулю, процесс начинает выполнять системные вызовы как администратор системы.

Эффективный идентификатор пользователя и группы остаються установленными до:

 

           * окончания процесса.

 

* пока они не заменяться при выполнении системного вызова exec() программы c   

установленными битами setuid или setgid.

 

* пока эффективный, реальный или сохраненные идентификаторы группы и         пользователя не будут установлены системными вызовами setuid(), setgid(), setresuid().

 

 

Группы процессов

 

Каждый процесс за исключением системных процессов таких как init и swapper принадлежат к группе процессов. Когда созхдается задание, шелл присваивает всем процессам в задании одну и туже группу процессов. Сигналы при этом могут распостраняться на все процессы в группе, в этом и заключается преимущество управления заданиями. Каждая группа процессов идентифицируется целым числом которое называется Process Group ID (PGID). PGID у группы процессов равен PID лидера группы – создателя группы. Все процессы в группе имеют одинаковый GID. PGID не может быть использован системой пока живет группа процессов. Время жизни группы процессов определяется как период времени между созданием группы и когда процесс покидает группу. Процесс покидает группу если:

 

           * когда другой процесс вызывает wait() или waitpid() функции на неактивный процесс.

 

           * при вызове setsid или setpgid системных вызовов.

 

Списки доступа группы

 

Каждый процесс имеет до NGROUPS_MAX списков групп к которым он может принадлежать.

NGROUPS_MAX определено в /usr/include/limits.h, и обычно равняется 20. Процессу разрешается получать доступ к файлам с групповымим правами любой из списка групп. Списки доступа. Групповые права доступа контролируются командой chgrp.

 

Сессии

 

Каждый процесс является членом сессии. Все процессы запущенные после логина принадлежат к одной сессии. Процесс принадлежит к той же сессии что и его родитель. Процесс может изменить сессию используя системный вызов setsid(), при этом этот процесс будет являться лидером сессии. Временем жизни сессии будет время с момента ее создания до момента завершения последнего процесса.

 

Процессы и терминальное взаимодействие.

 

Каждая сессия имеет управляющий терминал. Лидер сессии подключенный к управляющему терминалу называется еще контрольным процессом. Исключением являются процессы- демоны (cron, inetd, …) которые не имеют управляющего терминала. Все процессы принадлежащих к одной сессии используют управляющий терминал как стандартное устройство ввода, вывода и ошибок. В любой момент времени лишь одна группа процессов в сессии может находится не в фоновом выполнении и она имеет исключительные права на работу с управляющим терминалом.

 

Попытки чтения фоновой группой процессов

 

Если процесс из фоновой группы пытается читать из управляющего терминала, этой группе посылается сигнал SIGTTIN, который по умолчанию приостанавливает процесс. В любом случае системный вызов read() возвращает –1.

 

Попытки чтения фоновой группой процессов

 

Если процесс в фоновой группе пытается записать в управляющий терминал, группа процессов получает при этом сигнал SIGTTOU, который по умолчанию останавливает процесс.

 

Создание процессов

 

Один процесс может создать другой через:

 

           * паралельное выполнение другой программы

               

* выполнение другой программы с ожиданием ее окончания

 

На системном уровне процесс создается во время вызова системного вызова fork() или vfork().

 

Системный вызов fork()

 

Этот системный вызов создает новый процесс путем клонирования существующего. В старых реализациях HP-UX, система копировала полностью сегмент данных процесса, что негативно сказывалось на скорости и эффективности работы системы. Сейчас реализуется механизм известный как copy-on-write (на самом деле HP-UX реализует механизм copy-on-access), который позволяет использовать общие страницы памяти до момента записи.

 



2019-07-04 268 Обсуждений (0)
Идентификаторы пользователя и группы. (реальные и эффективные) 0.00 из 5.00 0 оценок









Обсуждение в статье: Идентификаторы пользователя и группы. (реальные и эффективные)

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (268)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)