O Unix tem o conceito de UIDs real e efetivo (e GIDs).
Quando você executa um programa setuid, o ID efetivo do processo é definido como o proprietário do arquivo.
Portanto, no caso de mount
, você tem um ID efetivo de root
. Mas você ainda tem um ID real de user
.
Programas como passwd
ou su
ou mount
podem verificar o ID real para ver quem o está executando e agir de maneira diferente. Para passwd
, isso permite que o usuário root
altere a senha de outra pessoa; para su
permite trocar usuários sem saber a senha.
Para mount
, os usuários podem montar seus próprios sistemas de arquivos se estiverem definidos em /etc/fstab
e tiverem o atributo user
associado a eles
por exemplo, no meu Debian fstab
eu tenho:
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Isso significa que um usuário não raiz pode executar mount /dev/sr0
ou mount /media/cdrom0
e tentará montar o CD / DVD.
Esta é uma lógica incorporada no próprio programa mount
; ele verifica o ID real do chamador.