next up previous
Next: Obtenção e modificação dos Up: Informações relativas ao usuário Previous: Direitos de acesso em

Identificadores dos usuários

Cada processo tem dois valores inteiros associados: o identificador (ou ID) do usuário real e o identificador (ou ID) do usuário efetivo.

O ID do usuário real identifica em qualquer caso o usuário executando o processo.

O ID de usuário efetivo é utilizado para determinar as permissões do processo. Estes dois valores são em geral iguais. Através da mudança do ID de usuário efetivo, um processo poderá ganhar permissões associadas ao novo ID do usuário (e perder temporariamente àquelas associadas ao identificador do usuário real).

Exemplo:

                /* arquivo test_acces.c */
#include <errno.h>
#include <stdio.h>
#include <stdlib.h> /* primitiva system */

int main()
{
FILE *fp ;
     system("echo Meu login e: $LOGNAME");
     printf("Vou tentar abrir o arquivo  /home/saibel/teste\n");
     if((fp=fopen("/home/saibel/teste","w")) == NULL )
          perror("Error fopen()");
     else
          printf ("O arquivo teste esta aberto\n");
     printf("Vou tentar abrir o arquivo  /home/adelardo/teste\n");
     if((fp=fopen("/home/adelardo/teste","w")) == NULL )
          perror("Error fopen()");
     else
          printf ("O arquivo teste esta aberto\n");
     exit(0);
}

O programa test_s anterior é modificado agora pela adição de comandos para a abertura de um arquivo pertencente a usertest. O bit s é colocado em 1 para test_acces.

euler:~> ls -l test_acces
-rwsr-xr-x   1 saibel   prof        12521 Sep 25 10:59 test_acces*
euler:~> ls -l /home/saibel/teste
-rw-rw-r--   1 saibel   prof       0 Sep 25 10:59 /home/saibel/teste

lyapunov:~> ls -l /home/usertest/teste
-rw-rw-r--   1 usertest   prof     0 Sep 25 10:30 /home/usertest/teste

Agora, saibel lança o programa test_acces. Pode ser observado que ele tem o acesso ao arquivo teste que lhe pertence, mas não ao arquivo de usertest.

euler:~> test_acces
Meu login e: saibel
Vou tentar abrir o arquivo  /home/saibel/teste
O arquivo teste esta aberto
Vou tentar abrir o arquivo  /home/usertest/teste
Error fopen(): Permission denied
euler:~>

Do seu lado, usertest lança test_acces e obtém os direitos de acesso sobre o arquivo teste pertencendo a saibel, mas ele perde os direitos de acesso sobre seu próprio arquivo teste:

lyapunov:~> test_acces
Meu login e: usertest
Vou tentar abrir o arquivo  /home/saibel/teste
O arquivo teste esta aberto
Vou tentar abrir o arquivo  /home/usertest/teste
Error fopen(): Permission denied
lyapunov:~>



Subsections
next up previous
Next: Obtenção e modificação dos Up: Informações relativas ao usuário Previous: Direitos de acesso em
Celso Alberto Saibel Santos 2000-11-14