Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Атрибуты процесса

Читайте также:
  1. A. ненормальный ход родового процесса, родо­вые травмы
  2. D. как завершающий этап сукцессионного процесса
  3. I. Определение эпидемического процесса и методологическое обоснование разделов учения об эпидемическом процессе.
  4. I. Определение эпидемического процесса и методологическое обоснование разделов учения об эпидемическом процессе.
  5. II. Факторы эпидемического процесса.
  6. III. Механизм развития эпидемического процесса.
  7. III. Психологическое сопровождение учебно-воспитательного процесса (участие в формировании «умения учиться») Определение мотивации учебной деятельности
  8. IV. Правотворчество: понятие, функции, виды. Стадии законотворческого процесса.
  9. IY. Проявления эпидемического процесса.
  10. LINUX|| Процессы в ОС Linux. Этапы создания процесса.

Процесс в UNIX имеет несколько атрибутов, позволяющих операционной системе эффективно управлять его работой, важнейшие из которых рассмотрены ниже.

- Идентификатор процесса Process ID (PID). Каждый процесс имеет уникальный идентификатор PID, позволяющий ядру системы различать процессы. Когда создается новый процесс, ядро присваивает ему следующий свободный (т. е. не ассоциированный ни с каким процессом) идентификатор. Присвоение идентификаторов происходит по возрастающий, т. е. идентификатор нового процесса больше, чем идентификатор процесса, созданного перед ним. Если идентификатор достиг максимального значения, следующий процесс получит минимальный свободный PID и цикл повторяется. Когда процесс завершает свою работу, ядро освобождает занятый им идентификатор.

- Идентификатор родительского процесса Parent Process ID (PPID). Идентификатор процесса, породившего данный процесс.

- Приоритет процесса (Nice Number).Относительный приоритет процесса, учитываемый планировщиком при определении очередности запуска. Фактическое же распределение процессорных ресурсов определяется приоритетом выполнения, зависящим от нескольких факторов, в частности от заданного относительного приоритета. Относительный приоритет не изменяется системой на всем протяжении жизни процесса (хотя может быть изменен пользователем или администратором) в отличие от приоритета выполнения, динамически обновляемого ядром.

- Терминальная линия (TTY). Терминал или псевдотерминал, ассоциированный с процессом, если такой существует. Процессы-демоны не имеют ассоциированного терминала.

- Реальный (RID) и эффективный (EUID) идентификаторы пользователя. Реальным идентификатором пользователя данного процесса является идентификатор пользователя, запустившего процесс. Эффективный идентификатор служит для определения прав доступа процесса к системным ресурсам (в первую очередь к ресурсам файловой системы). Обычно реальный и эффективный идентификаторы эквивалентны, т. е. процесс имеет в системе те же права, что и пользователь, запустивший его. Однако существует возможность задать процессу более широкие права, чем права пользователя путем установки флага SUID, когда эффективному иденти­фикатору присваивается значение идентификатора владельца исполняе­мого файла (например, администратора).

- Реальный (RGID) и эффективный (EGID) идентификаторы группы. Реальный идентификатор группы равен идентификатору первичной или текущей группы пользователя, запустившего процесс. Эффективный иден­тификатор служит для определения прав доступа к системным ресурсам по классу доступа группы. Так же как и для эффективного идентификатора пользователя, возможна его установка равным идентификатору группы владельца исполняемого файла (флаг SGID).

Команда ps(1) (process status) позволяет вывести список процессов, выпол­няющихся в системе, и их атрибуты:

$ ps   -ef   head –20  
UID   PID   PPID   С   STIME   TTY   TIME  
root       Dec        
root       Dec        
root       Dec        
root       Dec        
root       Dec        
fed       Dec   pts/3    
fed       Dec   pts/4    
fed                        

 

 

При регистрации пользователя в системе утилита login(l) запускает командный интерпретатор, — login shell, имя которого является одним из атрибутов пользователя. При этом идентификаторам DID (EUID) и GID KEGID процесса shell присваиваются значения, полученные из записи Пользователя в файле паролей /etc/passwd. Таким образом, командный интерпретатор обладает правами, определенными для данного пользователя.

При запуске программы командный интерпретатор порождает процесс, который наследует все четыре идентификатора и, следовательно, имеет те же права, что и shell. Поскольку в конкретном сеансе работы пользователя в системе прародителем всех процессов является login shell, то и их пользовательские идентификаторы будут идентичны.

Казалось бы, эту стройную систему могут "испортить" утилиты с установленными флагами SUID и SGID. Но не стоит волноваться — как правило, такие программы не позволяют порождать другие процессы, в противном случае, эти утилиты необходимо немедленно уничтожить!

Рисунок 4.1 – процесс наследования процессов

На рис. 4.1 показан процесс наследования пользовательских идентификаторов в рамках одного сеанса работы.Для получения значений идентификаторов процесса используются следующие системные вызовы:

ftinclude <sys/types.h> ftinclude <unistd.h> uid t getuid(void);

uid_t geteuid(void);

gid t getgid(void);

gid_t getegid(void);

Эти функции возвращают для сделавшего вызов процесса соответственно реальный и эффективный идентификаторы пользователя и реальный и эффективный идентификаторы группы.

Процесс также может изменить значения этих идентификаторов с помошью системных вызовов:

#include <sys/types.h>

#include <unistd.h> int setuid(uid_t uid);

int setegid(gid_t egid);

int seteuid(uid_t euid);

int setgid(gid_t gid);

Системные вызовы setuid(2) и setgid(2) устанавливают сразу реальный и эффективный идентификаторы, а системные вызовы seteuid(2) и setegid(2) — только эффективные.

 




Дата добавления: 2014-12-19; просмотров: 44 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав