sudo
funciona com um mecanismo chamado setuid ( Definir ID do usuário ou também chamado 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 sudo é executado como root
. Por enquanto, tudo bem. Mas agora nada impede que você insira uma unidade USB com um shell, 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 mount noexec
, para impedir a execução de binários / scripts em um dispositivo desse tipo. Outra opção de montagem, se você ainda quiser executar arquivos, é aquele que é mencionado na mensagem de erro na sua pergunta: nosuid
.
Veja o trecho da página do manual de montagem :
[...]
nosuid Do not allow set-user-identifier or set-group-identifier bits to take effect.
[...]
Com o mount
comando, você pode determinar se o seu 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 suid
opção, que é exatamente o oposto de nosuid
.
mount
sua pergunta, por favor?