sudo
funciona com um mecanismo chamado setuid ( Set ID do usuário , ou também chamado de suid ). Se esse bit estiver definido em um arquivo executável (como sudo
), o aplicativo será executado sob as permissões do usuário, que é o proprietário desse arquivo (no caso de sudo
, o proprietário é o root
usuário).
Isso significa que o sudo é executado como root
. Por enquanto, tudo bem. Mas, agora, nada impede que você insira uma unidade USB com um shell nela, que tenha o bit setuid definido. Você tem acesso root completo! É por isso que normalmente as unidades USB são montadas com a opção de montagem noexec
, para evitar a execução de binários / scripts em tal dispositivo. Outra opção de montagem, se você ainda deseja executar arquivos, é aquela mencionada na mensagem de erro em sua pergunta: nosuid
.
Veja o excerto da página de manual de montagem :
[...] nosuid Do not allow set-user-identifier or set-group-identifier bits to take effect. [...]
Com o comando mount
, você pode determinar se o sistema de arquivos raiz está montado com essa opção. Basta digitar:
$ mount
Agora você pode remontar o sistema de arquivos on-the-fly e alterar as opções de montagem:
$ mount -n -o remount,suid /
Isso define a opção suid
, que é exatamente o oposto de nosuid
.