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)