setuid

SETUID(2)                   Linux Programmer's Manual                  SETUID(2)



NOME
       setuid - selecionar a identidade do usuário

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

       int setuid(uid_t uid)

DESCRIÇÃO
       setuid seleciona a ID efetiva de usuário do processo atual.  Se a ID
       efetiva do usuário do processo solicitante é root, as ID´s efetivas e
       guardas serão também selecionadas.

       No Linux, setuid é implementado como a versão POSIX com a característica
       _POSIX_SAVED_IDS.  Isto permite um programa setuid (exceto root) para
       deixar todos deste privilérios de usuário, para alguns trabalhos
       desprivilegiados, e então reusa a ID de usuário efetiva original em um
       modo seguro.

       Se o usuário é o superusuário ou o programa setuid root, cuidados
       especiais devem ser tomados. A função setuid verefica a uid efetiva do
       solicitante e se ele é o superusuário, todo processo com a ID do usuário
       serão selecionadas para uid.  Deposi disto ter ocorrido, é impossível
       para o programa recuperar os privilégios de superusuário.

       Assim, um programa setuid root desejando, temporariamente, deixa os
       privilégios de superusuário, assume a identidade de um usuário sem ser o
       superusuário, e então recupera os privilégios de superusuário mas tarde
       sem poder usar setuid.  Você pode completar esta com a chamada (BSD, e
       não a POSIX) seteuid.

VALORES RETORNADOS
       Em caso de sucesso, zero é retornado. Caso contrário, -1 é retornado, e
       errno é selecionado apropriadamente.

ERROS
       EPERM  O usuário não é o superusuário, e uid não casa a ID de usuário
              efetiva ou guardada do processo solicitante.

DE ACORDO COM
       SVr4, SVID, POSIX.1. Não totalmente compatível com a chamada BSD 4.4, a
       qual seleciona todas as IDs de usuário real, guardada, e efetiva. SVr4
       documenta uma condição de erro adicional EINVAL.

ADVERTÊNCIA ESPEÍFICA PARA O LINUX
       O Linux tem o conceito de ID de usuário do sistema de arquivos,
       normalmente igual a ID efetiva de usuário. A chamada setuid também
       seleciona a ID de usuário do sistema de arquivos do processo corrente.
       Veja setfsuid(2).

       Se uid é diferente de velhas uid efetivas, o processo irá ser proíbido de
       saídas core dumps.

VEJA TAMBÉM
       getuid(2), setreuid(2), seteuid(2), setfsuid(2)

TRADUZIDO POR LDP-BR em 21/08/2000.
       André L. Fassone Canova <lonelywolf@blv.com.br> (tradução)
       xxxxxxxxxxxxxxxxxxxxxxxxx <xxx@xxxxxx.xxx.xx> (revisão)



Linux 1.1.36                       29/07/1994                          SETUID(2)