Voltar à lista
Linux x86_64Usuários & permissões#105

setuid

Define o UID efetivo (e, se privilegiado, também o real e o saved-set) do processo chamador.

Descrição

Mecanismo central de abandono de privilégios: um processo root tipicamente chama `setuid` para um UID sem privilégio depois de completar tarefas que exigiam ser root, e não pode mais recuperar privilégios depois — a menos que ainda tenha o saved-set-UID disponível.

Header: unistd.hman 2

Atenção

Em programas multi-thread, `setuid` afeta todas as threads do processo (diferente de syscalls que operam por thread), mas historicamente já foi fonte de bugs sutis quando implementado incorretamente — prefira as APIs de biblioteca (glibc) em vez da syscall crua.

Assinatura

int setuid(uid_t uid);

Parâmetros

ParâmetroTipoDescrição
uiduid_tNovo UID.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1uiduid_t

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EAGAIN(11)
Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
EINVAL(22)
Argumento inválido.
EPERM(1)
Operação não permitida (falta de privilégio).

Relacionadas