Права процессов
100%

Разрешения · Урок 7

Права процессов

Узнайте, как действительный, эффективный и сохранённый идентификаторы пользователя помогают процессам Linux отслеживать вызывающую сторону и управлять привилегиями.

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

Действительный идентификатор пользователя

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

У обычной команды, запущенной пользователем Bob, действительный идентификатор обычно равен UID Bob. Создание другого процесса само по себе не создаёт новую учётную запись и не меняет этот идентификатор.

Что обычно обозначает действительный идентификатор пользователя процесса?

Эффективный идентификатор пользователя

Эффективный идентификатор пользователя — это пользовательские учётные данные, применяемые во многих проверках файловой системы и привилегий. Обычно он совпадает с действительным UID. Выполнение учитываемой setuid-программы может вместо этого инициализировать его владельцем исполняемого файла.

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

Какой идентификатор пользователя применяется во многих решениях управления доступом от имени процесса?

Сохранённый set-user-ID

Сохранённый set-user-ID позволяет программе удерживать идентификатор, который она сможет позднее восстановить в соответствии с правилами системных вызовов. Привилегированная программа может временно переключить эффективный UID на менее привилегированное значение, выполнить обычную работу с ограниченными полномочиями и восстановить сохранённый идентификатор только для узкой операции.

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

Зачем привилегированной программе сохранять set-user-ID?

Идентификаторы пользователей — лишь часть набора учётных данных

У процессов также есть действительные, эффективные, сохранённые и дополнительные групповые учётные данные. На авторизацию дополнительно могут влиять идентификаторы файловой системы, capabilities, пространства имён, модули безопасности, ACL, параметры подключения и политики служб. Поэтому утверждение «UID это разрешает» часто объясняет лишь часть полного решения.

Для проверки учётных данных в Linux используйте такие инструменты, как ps и /proc/PROCESS/status. Наличие полей и форматы отображения различаются, поэтому обращайтесь к локальной документации и не меняйте учётные данные только ради эксперимента в общей системе.

Как обычно соотносятся действительный и эффективный UID у большинства обычных команд без перехода привилегий?

Урок завершён

Вы завершили Права процессов

Теперь вы можете объяснить, почему процесс Linux хранит несколько пользовательских идентификаторов.

  • Используйте действительный UID для определения исходной вызывающей стороны.

  • Связывайте эффективный UID с активными проверками авторизации.

  • Используйте сохранённый идентификатор для понимания контролируемых переходов привилегий.

  • Учитывайте идентификаторы групп и дополнительные механизмы безопасности как часть полного решения.

Сохраните прогресс

Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.

Создать бесплатный аккаунт
Следующий Урок
Назад к Разрешения