Evitar que comandos letais / fatais sejam executados [duplicados]

6

Depois de ler recentemente o artigo " 8 comandos mortais você Nunca deve ser executado no Linux ", planejei de alguma forma bloquear / impedir / alterar certos comandos. Eu não estou preocupado que alguém execute comandos destrutivos no meu PC. Estou preocupado que eu possa ser o culpado por trás do acidente.

Estou preocupado com os comandos listados abaixo.

wget http://example.com/something -O – | sh –
  • Eu corri esta linha quando estava copiando & amp; colando comandos de um guia. Se eu tivesse notado sh - , eu teria executado apenas depois de verificar o conteúdo do arquivo.

rm -rf /
  • acidentalmente acertei muito a tecla 'Enter' ...

Eu quero evitar cometer esses erros no futuro. Existe um arquivo de comando / configuração que pode garantir que eu não cometo esses erros? Eu não quero ser capaz de executar os comandos acima, mesmo com permissões sudo / root. Tudo bem se a solução puder ser revertida.

Recursos que me ajudarão a aprender mais sobre o Ubuntu (excluindo os links comuns do Ubuntu Wiki / Help / etc.) seriam muito apreciados !

A perda de dados não é minha principal preocupação. Eu quero tornar o terminal um pouco mais seguro para mim ('newb-proofed' se você quiser). Isso seria útil para mim, pois tenho muito a aprender. Eu comecei a escola novamente, & amp; Eu não posso estar gastando muito do meu tempo resolvendo problemas / erros (por mais interessante que seja).

Editar :

É possível exigir comandos específicos para solicitar confirmação? Se eu quisesse definir comandos específicos para exigir uma senha especial, isso pode ser feito?

    
por David your friend 19.08.2016 / 07:17

1 resposta

14

Como eu disse nos comentários, saber o que você digita é a melhor segurança .

Veja um exemplo que foi usado em uma pergunta relacionada

'base64 --decode <<< "cHJpbnRmICclcycgICdIZWxsbyBXb3JsZCcK"'

(e, para completar, você pode usar -d flag em vez de --decode . Alguém que tentou editar minha resposta disse -d é inválido, mas é muito válido, especificado no manual )

Você sabe o que isso faz? É um printf '%s' 'Hello World' disfarçado. Inofensivo, certo? E se isso fosse rm -rf / ? A lista negra não salvará você quando algo estiver disfarçado. Você pode ver esse comando colocado em um fórum legítimo por um usuário mal-intencionado? Porque isso acontece. E não tem que ser exatamente esse comando - se você é um usuário novo e não tem idéia do que está fazendo, um usuário mal-intencionado poderia dizer-lhe remova o python ou algum outro pacote de chaves, e isso consertaria qualquer problema que o trouxesse para o blog ou fórum deles.

Mas, claro, você pode colocar algo na lista negra por meio da função global (porque as funções têm precedência sobre comandos ou aliases) em /etc/bash.bashrc da seguinte forma:

function rm{

if [ "" = "-rf" ] && [ "" = "/" ]
then
    echo "This command is bad juju"
else
    rm "$@"
fi


}

Este é apenas um exemplo. E um muito redundante - rm -rf / no Ubuntu por padrão requer confirmação.

Isso também não é à prova de balas. E se eu, como invasor, usar um shell diferente? Seu bashrc magic não terá energia em dash shell, que vem com o Ubuntu também por padrão

Além disso, você vai escrever a função na lista negra de todos os comandos maliciosos?

Nota adicional: copiar o que parece ser um comando "inofensivo" também pode ser perigoso. Consulte Como posso me proteger desse tipo de abuso da área de transferência? e a resposta de Stephane Chazelas sobre o assunto.

    
por Sergiy Kolodyazhnyy 19.08.2016 / 10:00