web-dev-qa-db-fra.com

Empêcher l'exécution de commandes mortelles / fatales

Après avoir lu récemment l'article " 8 commandes mortelles à ne jamais exécuter sous Linux ", j'ai prévu de bloquer/empêcher/modifier certaines commandes. Je ne crains pas que quelqu'un d'autre exécute des commandes destructives sur mon PC. Je crains d'être le coupable de l'accident.

Je suis inquiet pour les commandes listées ci-dessous.

wget http://example.com/something -O – | sh –
  • J'ai exécuté cette ligne lorsque je copiais et collais les commandes d'un guide. Si j'avais remarqué sh -, je ne l'aurais exécuté qu'après avoir vérifié le contenu de l'archive.
rm -rf /
  • J'ai accidentellement appuyé beaucoup sur la touche "Entrée" ...

Je veux éviter de faire ces erreurs à l'avenir. Existe-t-il un fichier de commande/configuration qui peut garantir que je ne commets pas ces erreurs? Je ne veux pas pouvoir exécuter les commandes ci-dessus, même avec les autorisations Sudo/root. Ça va si la solution peut être inversée.

Les ressources qui m'aideront à en apprendre davantage sur Ubuntu (à l'exclusion des liens communs sur le wiki d'Ubuntu/Aide/etc.) seraient grandement appréciées !

La perte de données n'est pas ma préoccupation principale. Je veux rendre le terminal un peu plus sûr pour moi ("newb-proofed" si vous voulez). Cela me serait utile car j'ai beaucoup à apprendre. J'ai recommencé à aller à l'école et je ne peux pas passer trop de temps à résoudre des problèmes/des erreurs (aussi intéressant qu'il soit).

Éditer :

Est-il possible d'exiger des commandes spécifiques pour demander une confirmation? Si je voulais définir des commandes spécifiques pour exiger un mot de passe spécial, est-ce possible?

6
David your friend

Comme je l'ai dit dans les commentaires, , sachant que vous tapez est la meilleure sécurité .

Voici un exemple qui a été utilisé dans un question connexe

`base64 --decode <<< "cHJpbnRmICclcycgICdIZWxsbyBXb3JsZCcK"`

(et pour être complet, vous pouvez utiliser -d flag au lieu de --decode. Quelqu'un qui a essayé de modifier ma réponse a déclaré que -d n'est pas valide, mais il est très valide, spécifié dans le manuel )

Savez-vous ce que cela fait? C'est un printf '%s' 'Hello World' déguisé. Inoffensif, non? Et si c'était rm -rf /? Les listes noires ne vous sauveront pas si quelque chose est déguisé. Pouvez-vous voir cette commande mise sur un forum légitime par un utilisateur malveillant? Parce que ça arrive. Et il ne doit pas nécessairement s'agir exactement de cette commande - si vous êtes un nouvel utilisateur et n'avez aucune idée de ce que vous faites, un utilisateur malveillant pourrait vous dire que remove python ou un autre package de clé, et que réglerait le problème qui vous a amené sur son blog ou son forum.

Mais bien sûr, vous pouvez mettre quelque chose en liste noire via une fonction globale (parce que les fonctions ont priorité sur les commandes ou les alias) dans /etc/bash.bashrc comme ceci:

function rm{

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


}

C'est juste un exemple. Et très redondant - rm -rf / sur Ubuntu nécessite par défaut une confirmation.

Ce n'est pas non plus pare-balles. Que faire si, en tant qu'attaquant, j'utilise un autre shell? Votre magie bashrc n'aura pas de pouvoir dans dash Shell, qui est livré avec Ubuntu également par défaut

Aussi, allez-vous écrire une fonction pour mettre en liste noire chaque commande malveillante?


Remarque supplémentaire: copier ce qui semble être une commande "sans danger" peut également être dangereux. Voir Comment puis-je me protéger de ce genre d'abus de presse-papiers? et la réponse de Stéphane Chazelas à ce sujet.

14
Sergiy Kolodyazhnyy