O programa passwd
tem o conjunto de bits setuid , que você pode ver com ls -l
:
-rwsr-xr-x 1 root root 39104 2009-12-06 05:35 /usr/bin/passwd
É o s
(o quarto caractere da linha).
Todos os programas que possuem esse conjunto de bits de permissão são executados como o proprietário desse programa. Neste exemplo, o usuário é root
(terceira palavra da linha).
Esses programas setuid precisam ter certeza de que eles não causam danos a nada, já que todos os usuários do sistema podem executá-los com privilégios de root efetivos . É por isso que você só pode alterar sua própria senha. Linux e outros sistemas operacionais similares ainda são seguros porque os autores desses programas setuid tomam muito cuidado.
Veja, por exemplo, suexec.c do Apache Servidor Web, que é um programa setuid popular. Existem muitos comentários incomuns nesse código-fonte.