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”.

Em seguida, como usuário root, definimos o bit setuid do arquivo de “identidade”:
chmod u+s /usr/bin/identity
“U” indica que o bit (+ s) setuid deve ser definido apenas para o usuário.

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.
chmod 4755 /usr/bin/identity
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”.

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