Comment se protéger du "rm -rf *" involontaire ?

Comment se protéger du "rm -rf *" involontaire ? - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 18-06-2004 à 10:02:42    

Ca nous est tous arrivé au moins un fois, en root ou en user:

Code :
  1. rm -rf * ~


au lieu de

Code :
  1. rm -rf *~


par exemple ...
 
Comment s'en prémunir ?
export DO_NOT_ERASE="/ /bin /sbin /usr /home/glacote" # Par exemple
 
 
1 Créer des lien physiques

Code :
  1. d=/.DO_NOT_TOUCH_THIS/`date +"%Y%m%d-%kh%M" | sed "s/ /0/"`
  2. mkdir -p ${d}
  3. cp -Rl ${DO_NOT_ERASE} ${d}/


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 /.)

Code :
  1. for d in ${DO_NOT_ERASE}; do
  2.   touch ${d}/"-i"
  3. done


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)

Code :
  1. for d in ${DO_NOT_ERASE}; do
  2.   find ${d} -type f -exec chattr +i {} \;
  3. done


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)

Code :
  1. cat > /usr/bin/norm << EOF
  2. #!/bin/sh
  3. while [ -e "$1" ] ; do
  4.   mv "$1" ."$1".removed_on_`date +"%Y%m%d-%kh%M" | sed "s/ /0/"`}
  5.   shift
  6. done
  7. EOF
  8. alias rm=/sur/bin/norm


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
Reply

Marsh Posté le 18-06-2004 à 10:02:42   

Reply

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


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

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 ...


---------------
If everything else failed then read the instructions
Reply

Marsh Posté le 18-06-2004 à 10:19:46    

"censé", pas cencé


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
Reply

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

Reply

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.
 
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 ...


 
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 ...

Reply

Marsh Posté le 18-06-2004 à 11:12:55    

rm /bin/rm :whistle:


---------------
Fais le ou ne le fais pas, mais il n'y a pas d'essai !!!
Reply

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 ...

Reply

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 ...
Et ya pas besoin d'être root pour effacer accidentellement tout ses documents ...


Comme je l'ai dit plus haut ça protège aussi un user contre un "rm -rf *", pas seulement root.

Reply

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 ;)

Reply

Marsh Posté le 18-06-2004 à 12:09:38   

Reply

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

Reply

Marsh Posté le 18-06-2004 à 13:49:35    

chattr +i :
 


A file with the `i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created  to
       this  file  and  no  data  can  be  written  to  the  file.   Only  the superuser or a process possessing the
       CAP_LINUX_IMMUTABLE capability can set or clear this attribute.
 


 

Reply

Marsh Posté le 18-06-2004 à 13:50:58    

void_ppc a écrit :

chattr +i :
 


A file with the `i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created  to
       this  file  and  no  data  can  be  written  to  the  file.   Only  the superuser or a process possessing the
       CAP_LINUX_IMMUTABLE capability can set or clear this attribute.
 




+1

Reply

Marsh Posté le 18-06-2004 à 15:44:14    

alias rm=ls :D


Message édité par childjuice le 18-06-2004 à 15:44:25
Reply

Marsh Posté le 18-06-2004 à 16:08:12    

lol


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 18-06-2004 à 16:15:00    

et '*~'
 
l'étoile remplace n'importe quel caractère, mais le '~' ca correspond à quoi ?

Reply

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


Message édité par arsunik le 18-06-2004 à 16:22:39
Reply

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


Message édité par Profil supprimé le 18-06-2004 à 16:24:26
Reply

Marsh Posté le 18-06-2004 à 16:27:26    

jeep05 a écrit :

et '*~'
 
l'étoile remplace n'importe quel caractère, mais le '~' ca correspond à quoi ?


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.

Reply

Marsh Posté le 18-06-2004 à 16:46:55    

# Demande confirmation pour 'rm *'
unsetopt rm_star_silent
 
avec zsh


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

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.

Reply

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 :sol:

Reply

Marsh Posté le 20-06-2004 à 15:21:51    

rm -rf /bin/rm

Reply

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..

Reply

Marsh Posté le 20-06-2004 à 16:19:20    

glor a écrit :

alias 'rm'='rm -i'
Avec ca tu feras toutes tes commandes de supressions en intéractif.. Donc il te demanderas avant d'executer..


 
ouaip, mais ça protège pas d'un rm -f  :/

Reply

Marsh Posté le 20-06-2004 à 16:39:06    

Moi je dis: faire attention


---------------
Mac Pro powered (sorry)
Reply

Marsh Posté le 21-06-2004 à 10:24:00    

.... et taper systématiquement le chemin COMPLET du dossier à virer

Reply

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.


Message édité par Deadlock le 23-06-2004 à 10:05:40

---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
Reply

Marsh Posté le 23-06-2004 à 10:31:46    

-@ c'est mieux : ça ne correspond à aucune option valide.

Reply

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 ;)


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
Reply

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 :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed