Шрифт:
Процесс с эффективным UID, равным нулю, может установить в качестве эффективного UID любое значение. Поскольку в качестве значения эффективного UID можно установить также сохраненный set-user ID, процесс может восстановить свои привилегии root с помощью другого вызова
Эта функция делает для эффективного ID группы то, что
Следующий набор функций предлагает первоначальный API Unix для изменения действительных и эффективных UID и GID. В модели POSIX эти функции являются тем. что должна использовать программа с setuid-root для постоянного изменения действительного или эффективного UID:
Для обычного пользователя эта функция также устанавливает лишь эффективный UID. Как и для
Однако, для
Эта функция делает для эффективного ID группы то же, что
ЗАМЕЧАНИЕ. Возможность изменения ID группы зависит от эффективного ID пользователя. Эффективный GID, равный 0, не имеет особых привилегий.
Наконец, POSIX представляет для исторической совместимости две функции из BSD 4.2. В новом коде их лучше не использовать. Однако, поскольку вы, вероятно, увидите использующий эти функции старый код, мы их здесь опишем.
Устанавливает данные значения в качестве действительного и эффективного UID. Значение -1 для
Делает для действительных и эффективных ID групп то же, что
Сохраненный set-user ID в модели BSD не существует, поэтому лежащей в основе
Однако, с принятием POSIX модели сохранения set-user ID и функций
11.6.3. Использование битов setuid и setgid
Есть важные случаи, в которых действующая как
Рис. 11.1. От
Код для
1.
2.