The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

setuid (2)
  • setuid (2) ( Solaris man: Системные вызовы )
  • setuid (2) ( FreeBSD man: Системные вызовы )
  • >> setuid (2) ( Русские man: Системные вызовы )
  • setuid (2) ( Linux man: Системные вызовы )
  • setuid (3) ( POSIX man: Библиотечные вызовы )
  •  

    НАЗВАНИЕ

    setuid - устанавливает идентификатор пользователя  

    СИНТАКСИС

    #include <sys/types.h>
    #include <unistd.h>

    int setuid(uid_t uid);  

    ОПИСАНИЕ

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

    В Linux setuid реализован, как и в стандарте POSIX с возможностью _POSIX_SAVED_IDS. Это позволяет setuid-программам (не setuid-root) сбрасывать все привилегии, делать непривилегированную работу, а затем безопасным путем возвращать себе исходный идентификатор эффективного пользователя.

    Если пользователь root или программа установлена как setuid root, при работе требуется особая осторожность. Функция setuid проверяет идентификатор вызвавшего эффективного пользователя и, если это суперпользователь, то все устанавливаемые значения идентификаторов равны uid. После этого программа уже никаким образом не сможет вернуть права пользователя root.

    Таким образом, программа setuid-root, собирающаяся временно сбросить права root, на время сделаться другим пользователем, а затем восстановить права root, не сможет вернуть setuid. Требуемого результата можно достичь с помощью вызова seteuid,; этот вызов не описан в POSIX, но описан в BSD.  

    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ

    При успешном завершении возвращается нулевое значение. В случае ошибки возвращается -1, а переменной errno присваивается номер ошибки.  

    НАЙДЕННЫЕ ОШИБКИ

    EPERM
    Пользователь не является суперпользователем, а uid не совпадает с действительным или сохраненным идентификатором пользователя текущего процесса.
     

    СООТВЕТСТВИЕ СТАНДАРТАМ

    SVr4, SVID, POSIX.1. Этот системный вызов не полностью совместим с 4.4BSD, который устанавливает идентификаторы действительного, эффективного и сохраненного пользователя. SVr4 документирует дополнительный код ошибки EINVAL.  

    ЗАМЕЧАНИЯ ПО LINUX

    Linux поддерживает идентификатор пользователя файловой системы, обычно совпадающий с фактическим идентификатором. Системный вызов setuid также устанавливает идентификатор пользователя файловой системы. См. setfsuid(2).

    Если uid отличается от старого фактического идентификатора, то процессу нельзя будет создавать core-файлы.  

    СМ. ТАКЖЕ

    getuid(2), setreuid(2), seteuid(2), setfsuid(2)


     

    Index

    НАЗВАНИЕ
    СИНТАКСИС
    ОПИСАНИЕ
    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
    НАЙДЕННЫЕ ОШИБКИ
    СООТВЕТСТВИЕ СТАНДАРТАМ
    ЗАМЕЧАНИЯ ПО LINUX
    СМ. ТАКЖЕ


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру