Cum Setuid permite utilizatorilor să ruleze fișiere cu privilegii escalate

Como o Setuid permite que os usuários executem arquivos com privilégios escalonados

⌛ Reading Time: 4 minutes

Quando você executa um arquivo executável no Linux, ele geralmente é executado com o usuário e ID de grupo atuais. No entanto, há momentos em que você precisa executar esse arquivo como outro usuário (como root). Em vez de trocar de conta de usuário, você pode usar setuid para executar o executável como o proprietário do arquivo e não o usuário atual. Aqui, explicaremos como o setuid funciona e como permite aos usuários executar executáveis ​​/ binários com privilégios escalonados.

Como funciona o setuid?

Setuid significa SET User ID na execução. Digamos que temos um executável chamado “identidade” criado pelo usuário root. Ao executá-lo, ele será executado com seu ID de usuário, ID de grupo e privilégios de usuário. Se o bit setuid estiver definido no arquivo “identidade”, quando você executá-lo, ele será executado como o usuário root e seus privilégios de usuário.

Como ilustração, podemos verificar a propriedade do arquivo de “identidade” primeiro e verificar se ele pertence ao usuário root. A string de permissão também mostra os bits executáveis ​​(x) definidos para o usuário, grupo e outros.

O usuário “john1” executa o arquivo de “identidade”, que se torna um processo em execução. Conforme mostrado na lista de processos, o processo é criado e executado com o nome de usuário e ID de usuário “john1”.

Proprietário de Setuid John Id

Em seguida, como usuário root, definimos o bit setuid do arquivo de “identidade”:

“U” indica que o bit (+ s) setuid deve ser definido apenas para o usuário.

Conjunto de identidade setuid

Para o proprietário, na parte executável da string de permissão, podemos ver que “x” foi substituído por “s”. Sempre que você encontrar “s” para um executável, significa que o bit setuid foi definido nele.

A variante numérica do chmod comando também pode ser usado como mostrado abaixo.

A adição de 4 na sequência de permissão numérica denota a inclusão do bit setuid.

O seguinte é o que acontece quando “john1” executa o arquivo de “identidade” novamente. Olhando para a lista de processos em execução, podemos ver agora que o processo é criado e executado pelo usuário “root” em vez de “john1”.

Setuid John Ids Ownder

Uso importante do bit setuid

Na maioria das vezes, você ouvirá de especialistas que não deve executar aplicativos como usuário root. No entanto, existem casos em que certos arquivos precisam ser executados com permissão de root. Por exemplo, o passwd utilitário que vem instalado por padrão em sistemas Linux tem o bit setuid definido nele.

O motivo é simples: as informações de senha de um usuário são armazenadas nos arquivos “/ etc / passwd” e “/ etc / shadow”, que só podem ser modificados pelo “root”. Quando “john1” tentar alterar a senha para si mesmo, ele precisará ter permissão para modificar as informações nos dois arquivos mencionados acima. Tendo o bit setuid ativado passwd permite que “john1” tenha temporariamente permissões de root para alterar a senha do usuário e também atualizar informações nos dois arquivos.

Risco de Segurança Setuid

Se você não for cuidadoso, um invasor pode explorar binários setuid para controlar seu sistema. Os usuários normalmente não devem ter programas setuid instalados, especialmente setuid para usuários que não sejam eles próprios. Mais importante ainda, você não deve ter nenhum binário habilitado para setuid para o usuário root em sua pasta pessoal. Geralmente, são cavalos de Tróia ou malware.

Conclusão

Setuid só pode ser definido em arquivos executáveis. Da mesma forma, o setgid bit também pode ser definido, o que permite que todos os membros de um grupo executem um executável com permissões de proprietário.

Observe que setuid e setgid bits são sensíveis à segurança e devem ser usados ​​apenas por administradores de sistema qualificados.

Leia a seguir:

  • Como usar o Sticky Bit para gerenciar arquivos em diretórios compartilhados no Linux

  • Como fazer verificações ortográficas no terminal Linux
  • Usando os comandos find, locate, which e whereis para pesquisar arquivos no Linux

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

[pt_view id="5aa2753we7"]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *