Sim, você está perdendo algo óbvio.
Quando você executa cat
(ou ls
, sed
, awk
, vi
ou qualquer outro programa comum),
você o executa como você mesmo, então o programa / processo está restrito
por suas permissões. Quando você executa um programa setuid como passwd
,
o processo é executado com um UID de root, para que ele possa modificar /etc/shadow
(que você, rodando sob seu próprio UID, não pode acessar - nem mesmo ler).