SHPORA.net :: PDA

Login:
ðåãèñòðàöèÿ

Main
FAQ

ãóìàíèòàðíûå íàóêè
åñòåñòâåííûå íàóêè
ìàòåìàòè÷åñêèå íàóêè
òåõíè÷åñêèå íàóêè
Search:
Title: | Body:

b.UID-ul unui proces

Programul de mai jos demonstreazã apelul sistem setuid. Presupunem cã fi?ierul executabil produs prin compilarea programului are propietar pe "mauny" (identificatorul utilizator 8319), bitul sãu pentru setuid este activat ?i toþi utilizatorii au permisiunea sã-l execute. În plus, presupunem cã utilizatorii "mjb" (identificatorul utilizator 5088) ?i "maury" au în proprietate fi?iere cu acelea?i nume ?i ambele fi?iere au setat dreptul de acces read-only.Apelurile sistem getuid ?i geteuid întorc identificatorii real ?i efectiv ai procesului, 5088 ?i respectiv 8319 pentru tilizatorul "mjb". De aceea, procesul nu poate deschide fi?ierul "mjb", pentru cã utlizatorul efectiv (8319) nu are drept de citire a fi?ierului, dar poate deschide fi?ierul "maury".
^#include<fnctl.h>
^main()
{
^int uid, euid, fdmjb, fdmaury;
^ uid=getuid();
^ euid=geteuid();
^ printf("uid [procent]d euid [procent]d
", uid, euid);
^ fdmjb=open("mjb", O_RDONLY);
^ fdmaury=open("maury", O_RDONLY);
^printf("fdmjb [procent]D fdmaury [procent]d
", fdmjb, fdmaury);
^setuid(uid);
^printf("dupã setuid ([procent]d): uid [procent]d euid [procent]d
", uid, getuid(), geteuid());
^fdmjb=open("mjb", O_RDONLY);
^fdmaury=open("maury", O_RDONLY);
^printf("fdmjb [procent]d fdmaury [procent]d
", fdmjb, fdmaury);
^setuid(euid);
^printf("dupq setuid([procent]d):uid [procent]d euid [procent]d
", eiuid, getuid(), geteuid());
}
Dupã apelarea lui setuid pentru a schimba identificatorul efectiv al procesului în identificatorul utilizator real ("mjb') a doua instrucþiune printf tipãre?te valorile 5088 ?i 5088, identificatorul utilizator al lui "mjb". Acum procesul poate deshide fi?ierul "mjb", pentru cã identificatorul sãu utilizator are acces de citire pentru fi?ier, dar procesul nu poate deschide fi?ierul "maury". În final, dupã apelarea lui setuid, pentru a schimba identificatorul utilizator efectiv în valoarea salvatã de programi (8319), al treilea printf va tipãri din nou valorile 5088 ?i 8319.
Ultimul caz aratã cã procesul poate executa un program setuid ?i modifica identificatorul sãu utilizator efectiv cu identificatorul sãu utilizator real sau cel executat de setuid.