Trucs et astuces

Chattr : une commande pour empêcher la suppression des fichiers et répertoires

terminal

Qui n’a jamais supprimé ou effacer un fichier ou un dossier par erreur ? Je pense que c’est une chose qui est arrivée au moins une fois dans notre vie (bon moi c’est plusieurs fois, mais ça compte pas dans les statistiques, car je crois être un cas très spécial :p).

Pourtant sur les systèmes GNU//Linux, il existe une commande qui aurait pu m’épargner quelques crises de nerfs, si j’avais été au courant de son existence un peu plus tôt. Cette commande c’est chattr. Elle permet de sécuriser un fichier ou un répertoire en rendant leur suppression impossible, même avec les droits root.

Chattr est installé par défaut dans les distributions GNU/Linux, vous n’auriez donc pas à se soucier de ça. Quant à son utilisation, c’est une des plus facile.

Pour sécuriser un fichier :

sudo chattr +i fichier

Pour supprimer l’attribut i :

sudo chattr -i fichier

Pour sécuriser un répertoire  :

sudo chattr +i -R répertoire

Et pour annuler cette action :

sudo chattr -i -R répertoire

Enjoy it

source

9 Comments

  1. Bonjour

    Merci pour l’info sur chattr. Mais j’ai juste un petit problème:

    si je fais

    chattr +i Michelange.txt

    Il me répond

    chattr: Opération non permise lors de l’initialisation des drapeaux sur Michelange.txt

    Tu as une idée de ce que ça veut dire

    • crowd42

      Faut être root pour exécuter chattr :)

  2. egan

    petite typo dans la dernière ligne de commande.

  3. pierre2

    Merci pour ce petit tuto..

    Juste pour supprimer l’attribut sur un répertoire, plutôt ceci:

    sudo chattr -i -R répertoire

    ;-)

    Bonne journée.

  4. egide

    En effet c’est sympa! Malheureusement cela ne fonctionne que pour des archives. Car l’option -i, si j’ai bien compris le man, rend le fichier non modifiable.

    Ce qui serait le pied géant, ce serait d’avoir un attribut qui permette la modification des fichiers, mais pas la suppression, que ce soit par une commande système ou par un programme.

    Peut-être que l’option -u ferait l’affaire?

    cf. http://www.man-linux-magique.net/man1/chattr.html

    • crowd42

      Ça ne marche pas que our les archives ! Et -i rend un fichier/dossier modifiabe, pas l’inverse

    • Kev

      Tu peux rajouter le sticky bit, ex: chmod 1750 répertoire. Cela empechera que le proprio le supprime.

  5. Cédric

    Bon, par contre, il faut être root (enfin sudoiser la commande), c’est un peu chiant…

    Perso, j’utilise ça pour éviter l’erreur la plus courante (un * mal placé):

    function rm
    {
    #on vire les options
    count=0
    for a in “$@”
    do
    echo $a|grep ‘^-’ >/dev/null
    if [ "$?" != "0" ]
    then
    ((count+=1))
    fi
    done
    if (( count > 1 ))
    then
    echo -n “/bin/rm: $@ ?”
    read reply
    if [ "$reply" == "y" ]
    then
    /bin/rm -i “$@”
    fi
    else
    /bin/rm -i “$@”
    fi

    }

    Si il y’a plusieurs fichiers à supprimer, alors on demande une confirmation supplémentaire…

  6. Salut je rappel qu’il faut monter les partitions reiserfs avec l’option attrs pour pourvoir utiliser chattr

Laisser un commentaire