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)