Setuid
100%

Permissões · Lição 5

Setuid

Aprenda como o bit de modo set-user-ID afeta programas executáveis e por que ele exige uma revisão cuidadosa de segurança.

Alguns programas precisam de um acesso rigorosamente controlado que seus solicitantes normalmente não possuem. Em um arquivo comum executável, o bit set-user-ID pode fazer com que um novo processo receba o ID de usuário do proprietário do arquivo como seu ID de usuário efetivo. O programa pode então realizar operações autorizadas para essa identidade enquanto mantém informações sobre o solicitante.

Setuid não é uma instrução geral para “executar como root”. Seu efeito depende do proprietário do executável, do sistema operacional, do sistema de arquivos e das opções de montagem, além da forma como o programa gerencia suas credenciais.

Reconhecimento do Setuid

Em sistemas que usam um executável passwd com setuid, uma listagem longa pode se parecer com esta:

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 68248 Jan 10 09:30 /usr/bin/passwd

O s minúsculo na posição de execução do proprietário significa que tanto o setuid quanto a execução do proprietário estão definidos. Se o setuid estiver presente, mas a execução do proprietário estiver ausente, ls -l mostrará um S maiúsculo nessa posição.

Não presuma que todas as distribuições tenham o mesmo modo ou projeto de autenticação. Inspecione o sistema real em vez de depender do exemplo.

O que um s minúsculo na posição de execução do proprietário indica?

Compreensão da Alteração de Credenciais

Quando o kernel respeita o setuid durante a execução, o novo processo normalmente recebe um ID de usuário efetivo baseado no proprietário do executável. Para um programa pertencente ao root, isso pode fornecer acesso autorizado como root, mas apenas enquanto o programa é executado e somente por meio das operações realizadas por seu código.

Esse mecanismo pode permitir que um programa cuidadosamente desenvolvido valide uma solicitação e faça uma alteração restrita em um estado protegido. Por exemplo, um utilitário local para alterar senhas pode precisar de acesso controlado a dados de autenticação que usuários comuns não podem editar diretamente. As implementações modernas também dependem do PAM, de bloqueio de arquivos, de políticas e de outras proteções; o setuid sozinho não explica todo o fluxo de trabalho.

Quando um executável setuid é respeitado, qual identidade é obtida principalmente do proprietário do arquivo?

Definição e Remoção do Bit

Defina o setuid simbolicamente com:

$ sudo chmod u+s myfile

Na notação octal, o setuid contribui com 4 em um dígito inicial de bits especiais:

$ sudo chmod 4755 myfile

Neste caso, o 4 inicial define o setuid e 755 define os bits comuns do proprietário, do grupo e dos outros. Remova o setuid sem alterar os demais modos com chmod u-s myfile.

Qual valor octal inicial representa o bit especial setuid?

Tratamento do Setuid como Recurso Sensível à Segurança

Uma falha em um programa setuid privilegiado pode se tornar um caminho de elevação de privilégios. Esses programas devem validar as entradas, controlar o ambiente e os caminhos de arquivos nos quais confiam, evitar comportamentos inseguros em subprocessos, minimizar o código privilegiado e descartar as credenciais elevadas assim que possível.

Normalmente, o Linux não respeita o setuid em scripts interpretados, pois sua implementação segura apresenta problemas de condições de corrida e relacionados ao interpretador. Sistemas de arquivos montados com nosuid também suprimem os efeitos de setuid e setgid. Prefira mecanismos mais restritos, como operações intermediadas por serviços, uma política sudo cuidadosamente delimitada ou capacidades, quando forem adequados ao requisito.

Nunca adicione setuid a um shell, interpretador ou programa copiado arbitrariamente como experimento em um sistema compartilhado. Audite os arquivos setuid existentes e pratique apenas em um ambiente isolado e descartável.

Qual é a finalidade de montar um sistema de arquivos com nosuid?

Lição concluída

Você concluiu Setuid

Agora você sabe reconhecer o setuid e explicar suas implicações de credenciais e segurança.

  • Encontre s ou S na posição de execução do proprietário.

  • Relacione a execução setuid à identidade de usuário efetiva do proprietário do executável.

  • Defina ou remova o bit com os modos simbólico ou octal de chmod.

  • Trate todo executável privilegiado como código sensível à segurança.

Salve seu progresso

Crie uma conta gratuita para salvar esta lição e continuar em qualquer dispositivo.

Criar uma conta gratuita
Próxima Lição
Voltar para Permissões