4 votes

Protéger un dossier contre la suppression accidentelle avec `rm`.

J'ai un dossier ~/foo que je voudrais protéger d'une suppression accidentelle, c'est-à-dire que je voudrais le protéger d'une suppression avec rm -r ~/foo o rmdir ~/foo .

J'ai réalisé que vous pouvez le faire en utilisant chmod a-w ~/foo o chattr -i ~/foo mais cela présente l'inconvénient que vous ne pouvez rien modifier à l'intérieur de ce dossier. J'aimerais cependant pouvoir créer/déplacer/supprimer des fichiers et des dossiers. à l'intérieur de ~/foo .

Est-il possible de le faire ?

8voto

Rinzwind Points 270388

Créez un fichier caché à l'intérieur du dossier et faites ( .foo par exemple) comme "racine" :

touch ~/foo/.foo
chattr +i ~/foo/.foo

Vous pouvez maintenant supprimer tous les fichiers sauf .foo dans ce répertoire, et le répertoire ne peut pas être supprimé par un autre utilisateur. Vous pouvez cependant déplacer le répertoire et vous pouvez l'arrêter avec le sticky bit...

sudo chmod +t ~/foo

Et cela devrait couvrir votre problème. MAIS je suis d'accord : faire une sauvegarde est toujours la meilleure option. Une option un peu plus difficile : mettre un surveillant de répertoire sur ~/foo et créer une sauvegarde horodatée de chaque fichier touché et avant qu'il ne soit modifié dans un répertoire inaccessible aux utilisateurs serait une méthode plus sûre.

5voto

Artur Meinild Points 5704

Je suggère d'ajouter les "safetynets" suivants à votre .bashrc (ou fichier de configuration pour un autre Shell) pour éviter les erreurs les plus évidentes.

Demande une confirmation avant de supprimer 3 fichiers ou plus, ou n'importe quel répertoire de manière récursive. Empêche également la suppression de / de manière récursive : (le -I est moins intrusif que le paramètre -i qui demande une confirmation pour chaque fichier, mais qui empêche la plupart des erreurs par une seule demande de confirmation)

alias rm='rm -I --preserve-root'

Empêcher la modification des permissions et de la propriété sur / de manière récursive : (ce n'est pas votre question, mais c'est tout de même une bonne mesure de sécurité à inclure).

alias chmod='chmod --preserve-root'
alias chown='chown --preserve-root'
alias chgrp='chgrp --preserve-root'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X