Comment empêcher «sudo rm -rf /»

10

Quelques fois, j'ai accidentellement exécuté la commande sudo rm -rf /.

Existe-t-il un moyen de m'empêcher d'exécuter cette commande? Par exemple, puis-je le désactiver d'une manière ou d'une autre en utilisant le fichier sudoers?

iProgramme
la source
2
Comment tapez-vous accidentellement cette commande, puis exécutez-la ??
fnord_ix
Si je tape une commande comme celle-ci. sudo rm -rf / Applications/chess.appRemarquez l'espace entre le / et le A. Voilà comment
iProgram

Réponses:

14

Vous pouvez ajouter une ligne comme

%admin ALL = !/bin/rm -rf /

dans votre sudoersfichier pour empêcher l'exécution de la commande avec les options spécifiques.

Ou, si vous souhaitez exclure plusieurs commandes, vous pouvez travailler avec des alias de commande

Cmnd_Alias DANGEROUS_CMNDS=/bin/rm -rf /, /bin/rm -fr /
%admin ALL=!DANGEROUS_CMNDS

Vous pouvez également essayer de jouer en toute sécurité en utilisant

Cmnd_Alias DANGEROUS_CMNDS=/bin/rm -rf /, /bin/rm -fr /, /bin/rm / *, /bin/rm * /, /bin/rm -rf / *, /bin/rm -rf * /, /bin/rm -fr / *, /bin/rm -fr* /
%admin ALL=!DANGEROUS_CMNDS

mais il peut toujours y avoir d'autres façons de se tirer une balle dans le pied, rmalors soyez prudent quand même.

Mais gardez à l'esprit que toutes les correspondances sont effectuées sur la chaîne complète de la commande, donc sudo rm -rf /Volumescela fonctionnerait toujours (comme le ferait cd /; sudo rm -rf .).

PS: par tous les moyens, utilisez sudo visudopour modifier le sudoersfichier et ne le modifiez JAMAIS directement

PPS: Je n'ai évidemment pas testé cela avec rm(uniquement avec à la /bin/echoplace)

nohillside
la source
Les commentaires ne sont pas pour une discussion approfondie; cette conversation a été déplacée vers le chat .
bmike
6

Je sais que vous avez formulé la question d'une manière qui me fait soupçonner que vous ne voulez pas entendre cette réponse, mais vous devriez vraiment vous retirer du fichier sudoers si vous êtes enclin à faire la même erreur encore et encore.

Le problème sous-jacent est que vous n'avez pas d'alias rmpour être placé dans la corbeille (ce qui est clairement la façon dont vous l'utilisez actuellement et dans le passé) ou autrement contraint rm -rd'être forcé dansrm -ri

alias rm='/bin/rm -i'

Vous pouvez toujours contourner l'alias avec command rm -rf whateverune fois que vous vous êtes entraîné à mesurer deux fois, une seule coupe est nécessaire pour l' rm -rfutilisation.

bmike
la source
Merci pour cette astuce. Je pensais créer un compte administrateur caché (pour accéder au terminal uniquement) et un compte standard pour une utilisation normale uniquement. Je pourrais aussi faire en sorte que l'emballage passe à la poubelle. Merci pour cette astuce. Je pense que la prévention de sudo peut être une étape plus sûre. Je vais toujours m'assurer que je peux y accéder en me connectant à l'administrateur caché.
iProgram
N'ont pas marqué est comme répondu cependant car il ne répond pas à ce qui précède. C'est
quand