статьиGNU Free Documentation License материалы взяты из Википедии Статья была изменена. Оригинал статьи.

Suid

Материал из Энциклопедии в свободной энциклопедии
Перейти к: навигация, поиск

suid (сокр. от Set user ID) в атрибут исполняемого файла, позволяющий запустить его с правами владельца.

Содержание

[править] Общая информация

В Unix-подобных системах приложение запускается с правами пользователя, вызвавшего указанное приложение. Это обеспечивает дополнительную безопасность, так как процесс с правами пользователя не сможет получить доступ на запись к важным системным файлам, например /etc/passwd, который принадлежит суперпользователю root. Если на исполняемый файл установлен бит suid, то при выполнении эта программа автоматически меняет «эффективный userID» на идентификатор того пользователя, который является владельцем этого файла. То есть, независимо от того в кто запускает эту программу, она при выполнении имеет права хозяина этого файла.

[править] Пример

[bob@foo]$ cat /etc/passwd
alice:x:1007:1007::/home/alice:/bin/bash
bob:x:1008:1008::/home/bob:/bin/bash
 
[bob@foo]$ cat printid.c
 
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
 
int main(void)
{
    printf("Real UID\t= %d\n", getuid());
    printf("Effective UID\t= %d\n", geteuid());
    printf("Real GID\t= %d\n", getgid());
    printf("Effective GID\t= %d\n", getegid());
 
    return EXIT_SUCCESS;
}
 
[bob@foo]$ gcc -Wall printid.c -o printid
[bob@foo]$ chmod ug+s printid
[bob@foo]$ su alice 
Password: 
[alice@foo]$ ls -l
-rwsr-sr-x 1 bob bob 6944 2007-11-06 10:22 printid
[alice@foo]$ ./printid 
Real UID        = 1007
Effective UID   = 1008
Real GID        = 1007
Effective GID   = 1008
[alice@foo]$

[править] История

Бит suid был изобретен Деннисом Ритчи и запатентован в США компанией AT&T в 1979 году. Позже, патент 4135240 «Protection of data file contents» был выложен в свободный доступ.

[править] Безопасность

Программа с установленным битом suid является «потенциально опасной». В «нормальном» случае она не позволит обычному пользователю сделать то, что выходит за пределы его полномочий (например, программа passwd разрешит пользователю изменить только собственный пароль). Но, даже незначительная ошибка в такой программе может привести к тому, что злоумышленник сможет заставит её выполнить ещё какие-нибудь действия, не предусмотренные автором программы.

[править] Бит suid на неисполняемых файлах

Обычно, установка бита suid на неисполняемых файлах бессмысленна. Также бит не несет никакого смысла, если он установлен на директорию.

[править] См. также

Источник в «/w/index.php?title=Suid&oldid=44738522»
Пространства имён

Варианты
Просмотры
Действия