• [^] # Re: en cours d'utilisation

    Posté par (site web personnel) . En réponse à la dépêche ShaKe, un défragmenteur pour GNU/Linux. Évalué à 5.

    Après avoir obtenu le descripteur de fichier, la première chose que ShaKe fait est de tenter de prendre un verrou dessus (dans investigate (char *name, struct law *l), ligne 93 de judge.c :
    /* Put the lock */
    if (l->locks && -1 == flock (a->fd, LOCK_EX | LOCK_NB))
    {
    error (0, errno, "%s: failed to acquire a lock", a->name);
    goto freeall;
    }
    ).
    Le problème ne peut donc se poser qu'avec les applications qui n'honorent pas les verrous. Le seul moyen de s'en prémunir serait d'activer le "Mandatory Lock", qui force les applications à respecter le verrous (documenté dans /usr/src/linux/Documentation/mandatory.txt ), mais de mon point de vue c'est un hack et je ne l'activerais que si c'est vraiment nécessaire.

    Il y a trois autres sécurité pour éviter les problèmes de corruption :
    La fonction capture (struct accused *a, struct law *l), à la ligne 177 de executive.c qui est appellée avant les opérations d'écriture masque les signaux (notement).
    Après une opération de défragmentation, il vérifie rapidement que rien ne manque.
    À tout moment, une copie du fichier en cours d'écriture est disponible. Si ShaKe échoue (par exemple à allouer la mémoire) il indique son emplacement puis se suicide.