você está aqui: Home  → Arquivo de Mensagens

Arquivos setuid e setgid

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 19 de Abril de 1997

Programas com setuid bit são um mal necessário. Um mal porque se codificados erradamente podem ser utilizados para atacar um sistema e necessários porque muitas funções do sistema operacional dependem de sua existência para o seu funcionamento.

Um exemplo bastante claro é o arquivo passwd. Este arquivo não pode ser editado por usuários comuns, porque desta forma a criação de contas ficaria aberta a todos.

O arquivo /etc/passwd possui as seguintes permissões:

-rw-rw-r--   1 root     security     221 Sep 26 11:54 /etc/passwd

O usuário root e os usuários do grupo security podem ler e gravar este arquivo. Os demais usuários podem apenas ler as informações nele contidas.

Os usuários comuns não podem criar entradas mas devem poder alterar suas senhas. Como resolver este impasse?

Através de programas setuid. O programa passwd por sua vez possui as seguintes permissões:

$ ls -l /usr/bin/passwd
-r-sr-xr-x   1 root     1 security   48358 Nov  2 1993  /usr/bin/passwd

O caractere s em r-s significa que todos os que executam este programa o executam como o usuário proprietário do arquivo, neste caso, root.

Desta forma, quando um usuário digita passwd para trocar sua senha, ele vai conseguir gravar a nova senha no arquivo /etc/passwd independentemente do fato de que este arquivo não possui permissão universal de gravação.

Da explicação anterior pode-se entrever o perigo que programas com o setuid bit ligado podem representar para o sistema. Muitos administradores de sistemas criam shell scripts e programas com o setuid bit ligado para desempenhar funções determinadas no sistema.

A norma geral a ser seguida é criar o mínimo possível de programas com estas características e, caso realmente necessário, examinar e testar o código exaustivamente para evitar possíveis erros que possam ser explorados por usuários mal intencionados.

Além disto tudo, o administrador de sistemas tem que controlar o número de programas que possuem o setuid bit ligado em seu sistema.

O comando

$ find / -type f -a \(-perm 0400 -o -perm 0200 \) -print

irá localizar todos os arquivos no sistema que possuam o setuid ou setgid bit ligados. O setgid bit, possui funcionalidade idêntica ao setuid bit, mas atua sobre as permissões do grupo ao qual pertence o programa.

A listagem gerada deverá então ser cuidadosamente examinada para detectar possíveis anormalidades e para se tomar então as devidas providências.



Veja a relação completa dos artigos de Rubens Queiroz de Almeida