Comment se protéger du "rm -rf *" involontaire ? - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 18-06-2004 à 10:04:54
toujours être dans un répertoire perso pour éditer un fichier de conf et bien sur éviter d'être root
Marsh Posté le 18-06-2004 à 10:08:54
rm c'est clairement la commande qu'il ne faut pas tapper à l'aveuglette.
d'autre part on n'est jamais cencé etre root hors pendant la config
et on est pas cencé etre ailleur que dans /home
et on est cencé faire des sauvegardes régulières...
si en respectant tout ça on pert autre chose que la sauvegarde du score d'un jeu ou un truc aussi peu important c'est que votre arborescence est horriblement malpropre !
ps avec un clavier QWERTY c'est encore plus simple de pas se tromper ...
Marsh Posté le 18-06-2004 à 10:19:46
"censé", pas cencé
Marsh Posté le 18-06-2004 à 10:27:48
_ avoir un alias ou une fonction pour effacer les fichiers inutiles (par exemple les *~), par exemple :
cln () {
command find ${1:-.} \( -name '*.log' -o -name '*.tmp' -o -name '*~' -o -name '.*~' -o -name '#*#' -o -name '*.o' -o -name '*.aux' -o -name '*.toc' -o -name '.saves-*' -o -name '*.old' -o -name '*.bak' -o -name 'core' -o -name '.#*' -o -name '.nfs*' -o -name '~$*' \) -print0 | perl -p0l012e unlink
}
_ utiliser zsh qui te demande avant d'effacer rep/*
_ créer une fonction/un script rm qui fait ce que veux
_ faire régulièrement des backup
Marsh Posté le 18-06-2004 à 10:41:02
Klaimant a écrit : toujours être dans un répertoire perso pour éditer un fichier de conf et bien sur éviter d'être root |
francoisp a écrit : rm c'est clairement la commande qu'il ne faut pas tapper à l'aveuglette. |
Je n'ai jamais dit que ça ne protégeait que le super-utilisateur; au contraire en général celui qui a les droits "root" n'est pas assez benêt pour se faire avoir. L'objectif est plutôt de protéger les utilisateurs lambda contre eux-mêmes ...
Marsh Posté le 18-06-2004 à 11:12:55
rm /bin/rm
Marsh Posté le 18-06-2004 à 11:32:12
Peros, ça serait plus embetant pour moi de perdre tout mes documents, que de perdre tout le système ...
Et ya pas besoin d'être root pour effacer accidentellement tout ses documents ...
Marsh Posté le 18-06-2004 à 11:53:14
multani-1 a écrit : Peros, ça serait plus embetant pour moi de perdre tout mes documents, que de perdre tout le système ... |
Comme je l'ai dit plus haut ça protège aussi un user contre un "rm -rf *", pas seulement root.
Marsh Posté le 18-06-2004 à 12:09:38
glacote a écrit : Comme je l'ai dit plus haut ça protège aussi un user contre un "rm -rf *", pas seulement root. |
Je confirme donc tes propos
Marsh Posté le 18-06-2004 à 13:06:03
aliaser rm en rm -i c deja bcp
ou alors le remplacer par une pseudo corbeille
Marsh Posté le 18-06-2004 à 13:49:35
chattr +i :
|
Marsh Posté le 18-06-2004 à 13:50:58
void_ppc a écrit : chattr +i :
|
+1
Marsh Posté le 18-06-2004 à 15:44:14
alias rm=ls
Marsh Posté le 18-06-2004 à 16:08:12
ReplyMarsh Posté le 18-06-2004 à 16:15:00
et '*~'
l'étoile remplace n'importe quel caractère, mais le '~' ca correspond à quoi ?
Marsh Posté le 18-06-2004 à 16:22:02
_ à ton répertoire racine (home directory)
_ à la fin d'un fichier : c'est les fichiers de sauvegarde crée par Emacs
Marsh Posté le 18-06-2004 à 16:23:50
mais dans cette expression :
rm -rf *~
ca fait quoi ?
ok suite à ton édit. c'est la 2eme explication pour cet exemple
Marsh Posté le 18-06-2004 à 16:27:26
jeep05 a écrit : et '*~' |
Ca arrive quand même très souvent de taper "rm -rf *" en toute bonne foi ... mais pas dans le bon dossier.
Par exemple tu installes un logiciel (tar xf XX.tar && cd XX), puis tu fais un "cd $INSTALL" puis "rm -rf", sauf que "$INSTALL" n'était pas définie ...
Bref ça arrive très vite. La question est de trouver des parades pour limiter les dégats.
Marsh Posté le 18-06-2004 à 16:46:55
# Demande confirmation pour 'rm *'
unsetopt rm_star_silent
avec zsh
Marsh Posté le 19-06-2004 à 00:15:25
Comme l'a dit farib, utiliser ZSH évite ce genre de bourde.
Il y a une autre solution qui fonctionne avec tous les shells et tous les OS : dans un répértoire important, faire :
touch -- -@
Après, un rm -rf * va débuter par '-@' qui sera interprété comme une option invalide.
Marsh Posté le 20-06-2004 à 14:59:39
le coup du -@ ne marche pas si on fait rm -rf ./*
utiliser zsh reste une bonne solution
Marsh Posté le 20-06-2004 à 16:11:31
alias 'rm'='rm -i'
Avec ca tu feras toutes tes commandes de supressions en intéractif.. Donc il te demanderas avant d'executer..
Marsh Posté le 20-06-2004 à 16:19:20
glor a écrit : alias 'rm'='rm -i' |
ouaip, mais ça protège pas d'un rm -f
Marsh Posté le 20-06-2004 à 16:39:06
Moi je dis: faire attention
Marsh Posté le 21-06-2004 à 10:24:00
.... et taper systématiquement le chemin COMPLET du dossier à virer
Marsh Posté le 23-06-2004 à 10:05:06
Le plus simple étant de créer un fichier avec le nom "-i" dans les repertoires "sensibles". Une commande de type "rm [-options] *" va prendre ce nom fichier comme une variable.
Les fichiers commençant par "-" étant dans l'arborescence avant "." et ".." la commande rm sera en mode interractif dans ces repertoires.
Marsh Posté le 23-06-2004 à 10:31:46
-@ c'est mieux : ça ne correspond à aucune option valide.
Marsh Posté le 23-06-2004 à 10:36:12
axey a écrit : -@ c'est mieux : ça ne correspond à aucune option valide. |
C'est une histoire de goût en effet.
Je fait des "-i" depuis 10 ans pour éviter à mes chers pisseurs de code de nous faire chier avec Netbackup toutes les 5 minutes
Marsh Posté le 23-06-2004 à 11:08:55
Ah bein pareil, -@ depuis 10 ans mais c'est juste parce que je ne fais jamais de backup
Marsh Posté le 18-06-2004 à 10:02:42
Ca nous est tous arrivé au moins un fois, en root ou en user:
au lieu de
par exemple ...
Comment s'en prémunir ?
export DO_NOT_ERASE="/ /bin /sbin /usr /home/glacote" # Par exemple
1 Créer des lien physiques
Avantage: peut être mis en crontab
Inconvénients:
consomme de l'espace (pour les répertoires)
ne fonctionne qu'à l'intérieur d'une unique partition
2 Forcer l'interactivité (lu sur /.)
Avantage: ne consomme qu'un secteur par dossier, une fois pour toutes
Inconvénient:
ne marche que si on tape "*"
fait planter les autres commandes: "tar *" "du -hs *" etc.
3 Mettre l'attribut "immutable" (voidppc)
Avantage: on peut le faire fichier par fichier
Inconvénients:
ça empêche aussi les modifications (/etc/ ...)
seul root peut le faire (?)
4 Ne jamais rien effacer (c'est mon choix)
Avantage: on ne perd jamais rien
Inconvénients:
ne "comprend" pas "-rf"
bizarrement j'ai beau effacer, pas moyen de récupérer de la place ...
Avez-vous d'autres trucs ?
Message édité par glacote le 18-06-2004 à 15:55:31