Linux 1.1.36
Aliases: setuid32(2), setuid32(2), setuid32(2), setuid32(2), setuid32(2), setuid32(2), setuid32(2), setuid32(2)
manpages-pt-dev
Portuguese Versions of the Manual Pages (dev sections)
manpages-dev
Manual pages about using GNU/Linux for development
man-pages
Linux kernel and C library user-space interface documentation
NOME
setuid - selecionar a identidade do usuário
SINOPSE
#include <sys/types.h>
#include <unistd.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
TRADUZIDO POR LDP-BR em 21/08/2000.
André L. Fassone Canova <lonelywolf> (tradução)
xxxxxxxxxxxxxxxxxxxxxxxxx <xxx> (revisão)