J'ai simplement exécuté accidentellement rm -rf /*
, mais je voulais dire rm -rf ./*
(remarquez l'étoile après le slash).
alias rm='rm -i'
et --preserve-root
par défaut ne m'ont pas sauvé, alors y a-t-il des protections automatiques pour cela ?
Je n'étais pas en root et j'ai annulé la commande immédiatement, mais il y avait des permissions relax quelque part ou quelque chose parce que j'ai remarqué que mon invite de commandes Bash était déjà cassée. Je ne veux pas compter sur les permissions et ne pas être en root (je pourrais faire la même erreur avec sudo
), et je ne veux pas chasser des bugs mystérieux à cause d'un fichier manquant quelque part dans le système, donc, les sauvegardes et sudo
sont bien, mais je voudrais quelque chose de mieux pour ce cas spécifique.
À propos de réfléchir à deux fois et d'utiliser le cerveau. Je l'utilise en fait ! Mais je l'utilise pour résoudre une tâche de programmation complexe impliquant 10 choses différentes. Je suis tellement plongé dans cette tâche qu'il ne reste plus de puissance cérébrale pour vérifier les drapeaux et les chemins, je ne pense même pas en termes de commandes et d'arguments, je pense en termes d'actions comme 'vider le répertoire actuel', une partie de mon cerveau les traduit en commandes et parfois il fait des erreurs. Je veux que l'ordinateur les corrige, du moins les plus dangereuses.
17 votes
Pour information, vous pouvez également faire
rm -rf . /mydir
au lieu derm -rf ./mydir
et supprimer le répertoire dans lequel vous vous trouviez. Je trouve que cela arrive plus souvent.31 votes
Pour utiliser une analogie avec les armes à feu, cette question demande de faire en sorte que le pistolet reconnaisse que je vise mon pied et ne tire pas, mais je ne veux pas avoir la responsabilité de ne pas viser mon pied en premier lieu. Les armes à feu, tout comme les ordinateurs, sont stupides et si vous faites une chose stupide, vous obtiendrez des résultats similaires. En suivant cette analogie avec les armes à feu, rien ne vous empêchera de vous faire du mal sauf la vigilance et la pratique.
82 votes
@slillibri Sauf que
rm
n'est pas un pistolet, c'est un programme informatique, il pourrait être assez intelligent pour déterminer que l'utilisateur s'apprête à supprimer des fichiers importants et émettre un avertissement (comme il le fait réellement si vous essayez de fairerm -rf /
sans étoile).90 votes
@slillibri Les armes à feu sont équipées de sécurités. Demander comment améliorer les sécurités sur la commande
rm
est une question parfaitement légitime pour un administrateur système.5 votes
@slillibri ceci est moins similaire à demander comment ne pas me tirer dessus... et plus similaire à demander comment protéger quiconque de se faire tirer dessus. VOUS pourriez savoir comment ne pas vous tirer dans le pied... mais qu'en est-il de votre utilisateur stupide... s... collègue... s... Je veux dire... enfant de 8 ans qui imite un jeu vidéo? Si vous avez une arme à feu à la maison, il vaut mieux qu'elle ait deux serrures et une alarme pour vous alerter... Cela ne fait aucune différence. Protégez vos biens (famille et données précieuses).
2 votes
Peut-être que c'est une suggestion stupide, mais pourquoi ne pas utiliser un outil comme mc (midnight commander)? Avec mc, on vous demande toujours une confirmation lorsque vous souhaitez supprimer un répertoire.
0 votes
@Giorgio Je vais essayer d'utiliser le gestionnaire de fichiers vim plus souvent :)
26 votes
Sudo rm /bin/rm non recommandé, mais empêchera la plupart des suppressions :-)
8 votes
@Gilles avait des sécurités rm, en ajoutant -r et -f, ces sécurités ont été retirées. (-r permet à rm d'utiliser readdir/rmdir, -f permet à rm d'utiliser chmod). En utilisant l'analogie de l'arme à feu et ajoutant une touche d'hyperbole: c'est (à mon avis) comme demander comment éviter de tirer sur quelqu'un en pointant l'arme sur eux (arguments à rm), en désactivant la sécurité (-rf) et en appuyant sur la gâchette (rm).
1 votes
@ValentinNemcev Faire accidentellement
rm -rf /*
est un rite de passage Unix depuis la nuit des temps ! Maintenant, il est temps pour vous d'apprendre la commandefind
pour vous sauver de ce genre de souffrance à l'avenir. Certainement, vous devriez éviter certains des mauvais conseils que l'on trouve dans les réponses à cette question. Des suggestions telles que l'utilisation d'un fichier nommé spécialement-i
reviennent à dire à un enfant apprenant à faire du vélo de ne jamais pédaler, juste pousser sur le sol avec les pieds, oh et aussi assurez-vous de maintenir la poignée de frein en permanence. Si vous voulez rouler avec les grands, utilisezfind
.3 votes
Cette analogie
rm
etgun
est horrible.rm
est quelque chose que vous utilisez une douzaine de fois par jour - avec et sans sécurité dans votre vie de programmation régulière même si vous n'êtes pas du Texas. S'il vous plaît ne faites pas de débat sur les armes à feu ;)0 votes
@Paul mais que se passe-t-il si vous faites
/chemin/vers/rm -rf /bin/ rm
. La partie/chemin/vers
est là pour empêcher un idiot de l'exécuter et d'essayer de me dénoncer - cela s'est déjà produit!0 votes
Que voulez-vous dire par "--preserve-root par défaut ne m'a pas sauvé". Est-ce que cela devrait? Qu'est-ce qui s'est mal passé avec --preserve-root ?
1 votes
Limiter l'accès root et sudo aux personnes prudentes. Faites des sauvegardes de vos données. Utilisez toujours
set -u
dans vos scripts bash. Si vous travaillez avec des personnes qui suppriment souvent/
, alors envisagez le démarrage sans disque nfs ou le démarrage sans disque en ram initrd. Il existe d'autres façons de rendre/
en lecture seule, mais cela devient compliqué en fonction de votre configuration.1 votes
Entrez la commande sans appuyer sur Entrée, vérifiez, inspirez, vérifiez à nouveau, expirez, vérifiez une fois de plus, Appuyez sur Entrée.
1 votes
Pour ce que ça vaut, beaucoup (moi y compris) considèrent
alias rm="rm -i"
comme une pratique dangereuse plutôt que sûre. Voici pourquoi : cela amène une personne à s'attendre à ce que rm leur demande toujours d'abord s'ils veulent vraiment faire la chose. S'ils sont ensuite sur un autre système, ou connectés à un autre compte (peut-être root!), ou autre, et que l'alias n'est pas là... ils s'y attendent, ne l'obtiennent pas, et une suppression catastrophique se produit très probablement. Au lieu de cela, utilisezecho rm
ou type des commandesrm -i
. Faire de ces choses des habitudes est, à mon avis, le meilleur moyen de prévenir ce genre de choses.1 votes
@Paul rm est souvent une commande intégrée au shell, donc les effets seront étonnamment limités.
0 votes
Faites attention aux scripts avec le genre de langage
rm $MYDIRENAMEEMPTYVAR/
. entrainez vos yeux.