TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #77 6.75K
Идентификаторы процессов: пользователи и группы [1]

У каждого процесса есть набор, связанных с ним числовых идентификаторов пользователей (UID) и групп (GID). В число этих идентификаторов входят:

1) реальный (real) ID пользователя и группы;
2) действующий (effective) ID пользователя и группы;
3) сохранённый ID пользователя (set-user-ID) и группы (set-group-ID);
4) характерный для Linux пользовательский и групповой ID файловой системы;
5) дополнительные идентификаторы групп (supplementary group);

Реальный идентификатор пользователя и группы (RUID)

Реальные идентификаторы определяют пользователя и группу, которым принадлежит процесс. При входе в систему, оболочка получает свои ID пользователя и группы из полей файла "/etc/passwd". Каждый новый процесс наследует данные идентификаторы у своего родительского процесса:


$ echo $UID
1000

$ grep $LOGNAME /etc/passwd
hiko:x:1000:1000:hiko:/home/hiko:/bin/bash

$ stat -c "%u %g" /proc/$pid/
1000 1000


Действующий идентификатор пользователя и группы (EUID)

В большинстве реализаций UNIX действующие UID и GID используются для определения полномочий, которыми наделен процесс, при его попытке выполнения различных операций (в том числе, системных вызовов).

Эти ID используются ядром для определения прав, которые будет иметь процесс при доступе к общим ресурсам, таким как: очереди сообщений, общая память, объекты межпроцессного взаимодействия (IPC) и семафоры.

В большинстве систем UNIX эти ID также определяют права доступа к файлам (в Linux для этой задачи используются ID файловой системы).

Процесс, чей действующий идентификатор пользователя имеет значение 0, называется привилегированным и принадлежит пользователю с именем root (имеет все полномочия суперпользователя). Некоторые системные вызовы могут быть выполнены только привилегированными процессами.

ID действующего пользователя и группы процесса можно получить с помощью вызовов geteuid и getegid.

Проводя сравнение между EUID и RUID можно сказать, что RUID обозначает пользователя, который владеет процессом, EUID является параметром, на который смотрит ядро ОС для того, чтобы разрешить вам выполнить действие либо отклонить запрос:


$ ps -eo pid,euid,ruid | grep 2254
2254 0 0


Также, важно помнить, что значение EUID может быть изменено и некоторые программы, такие как sudo, используют это для того, чтобы выполнять ряд привилегированных операций.

Сохранённые set-user-ID и set-group-ID (SUID)

Эти ID используются в программах с set-user-ID и set-group-ID битами для сохранения копии соответствующих EUID. Бит SUID можно опознать по букве 's', заменяющей обычный бит выполнения 'x'. Это говорит нам о том, что файл будет выполняться с правами владельца, а не пользователя, который его запускает:


$ stat -c "%A %a %n" /usr/bin/passwd
-rwsr-xr-x 4755 /usr/bin/passwd


Когда set-user-ID-программа запускается (загружается в память процесса с помощью команды exec()), ядро устанавливает для действующего EUID точно такое же значение, что и у пользовательского UID исполняемого файла:


$ su
# chown root app
# chmod u+s app
# ls -l app
-rwsr-xr-x 1 root users


После запуска, EUID пользователя будет скопирован в SUID. Идентификаторы процесса будут проставлены следующим образом: RUID=1000, ЕUID=0, SUID=0.

Программа с set-user-ID может повышать и понижать права, переключая свой ID действующего пользователя (EUID) между значениями RUID и SUID. Это полезно в случаях, когда, например, привилегированному процессу нужно выполнить непривилегированную задачу.

Такое переключение производится с помощью вызовов seteuid, setreuid или setresuid. Программа с set-group-ID выполняет аналогичные задачи с помощью setegid, setregid или setresgid.

Сохранённые set-user-ID и set-group-ID процесса можно получить с помощью getresuid и getresgid соответственно.

Linux++ | IT-Образование
  • 👍 24
  • 🔥 5
  • ❤ 2
  • ❤‍🔥 2
  • 🥰 1
More from @linuxcamp_tg
  1. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  2. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  3. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  4. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
  6. Sep 17, 2026Открыл плейлист, а как выйти - непонятно 😁 LinuxCamp | #memes
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →