O usuário root em sistemas linux / unix pode gravar em um arquivo mesmo que o sinalizador de gravação não esteja configurado. Portanto, ele pode alterar o conteúdo de /etc/shadow
ou qualquer outro arquivo independente de suas permissões.
O utilitário passwd
tem o bit setuid definido. Veja com:
ls -la /usr/bin/passwd
Deveria ser assim:
-rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd
Observe o s
na permissão do proprietário do arquivo. Isso indica o bit setuid . Se um usuário normal agora executa o utilitário passwd
, ele é executado com a permissão do proprietário do arquivo; neste caso, raiz.
O bit setuid ganha privilégios temporariamente elevados para executar uma tarefa específica, como alterar coisas em arquivos do sistema, por exemplo, /etc/shadow
ou /etc/passwd
.
O bit setuid deve ser manuseado com cuidado. Esse mecanismo pode ser usado para várias vulnerabilidades, se definido no binário errado. Imagine, o utilitário /bin/bash
teria definido o bit setuid; então todo usuário no sistema poderia iniciar um shell de root!