Journal Recycled4Linux

Posté par  .
Étiquettes : aucune
0
1
fév.
2004
Recycled4Linux (http://www.shirka.org/phpwebsite/pagemaster~PAGE_user_op~view_page~(...)) est compose d'un module pour le kernel et d'un utilitaire en ligne de commande pour modifier son comportement.

Le module lui meme, remplace la commande "sys_unlink" (se trouvant dans la sys_call_table) du kernel par la sienne. Le remplacement de la fonction "sys_unlink" se fait a la vole pour l'instant (comme d'autres modules existant sur le net). Je n'ai pas fait pour l'instant de patch pour le kernel. Mais c'est relativement simple a faire, vu que l'essentiel est deja fait.

Fonctionnement
Il intercepte de ce fait, toutes les suppressions que le systeme peut lancer quelque soit le systeme de fichier, et selon des criteres definis par chaque utilisateur, il deplace le fichier a supprimer dans une repertoire "./recycled" en recreant l'arborescence. Les criteres sont l'inclusion ou l'exclusion des repertoires a surveiller, ignorer ou non les fichiers et repertoires commencant par un point, ignorer ou non les fichiers de taille nulle, ignorer ou non les fichiers de taille inferieur ou supperieur a une taille donnee...

Un exemple :
Si vous supprimez le fichier /home/alfred/Documents/essai.txt, il est deplace dans le repertoire /.recycled/501/home/alfred/Documents/essai.txt (501 est l'ID de l'utilisateur alfred)
Comme vous pouvez le constater, il recree l'arborescence (en gardant les droits des repertoires et fichiers supprimes). Si deux fichiers portent le meme nom, le second sera renome essai.txt[001], ainsi de suite.

Notez que les fichiers restent sur le meme systeme de fichier. Je m'explique par un exemple :
soit une partition monte ainsi : /dev/hda7 -> /var, si vous supprimez "/var/log/syslog", il sera deplace vers /var/.recycled/0/var/log/syslog (0 etant l'ID de root). L'avantage de cette methode est que le deplacement est tres rapide (plus rapide que la suppression en elle meme). Car c'est le nom du fichier qui est deplace, les donnees restent a la meme place.

Aidez moi. Testez ce projet ;)

Il n'y a pas besion de patcher votre kernel.
  • # Re: Recycled4Linux

    Posté par  (site web personnel) . Évalué à 2.

    Excellente idée je testerais ptet bientot
    par contre une idée:
    Lorsque l'espace disque restant est inferieur a un certain pourcentage (defini a l'insertion du module ou dans un fichier /proc)il vide les fichiers les plus anciens, en supposant qu'il conserve les dates de modifications :)
    • [^] # Re: Recycled4Linux

      Posté par  . Évalué à 1.

      Ce dont tu parles, c'est le quota par repertoire (avec en plus la suppression des fichiers les plus anciens). D'apres ce que je sais, le quota par repertoire n'existe pas sous Linux (Unix ?, BSD ?, ...).
      Il y a deux grandes methodes pour realiser cela :
      • utiliser un programme externe (script dans crontab, daemon, ...)
      • ou le faire en interne (au niveau du module)

      En sachant, que le realiser au niveau du module, est assez complexe.

      Je me tate pour realiser un module dedie a cela : "quotadir". A voir.
  • # Re: Recycled4Linux

    Posté par  (site web personnel) . Évalué à 1.

    Franchement, voilà tout simplement une idée excellente. Je pense que moi aussi je vais installer ce module.

    Serait il possible de le soumettre aux développeurs du kernel pour que ce soit un jour intégré comme module dans le noyau ?
    • [^] # Re: Recycled4Linux

      Posté par  . Évalué à 1.

      Un jour peut etre ... mais je reve :)

      L'homme n'etant parfait, pour moi, tout systeme de fichier devrait contenir a la base, un mecanisme pour recuperer (ou garder) un fichier supprime par megarde. Ce mecanisme devrait etre le plus simple a utiliser.

      Un exemple de la vie courante :
      Je jete par megarde ma derniere fiche de paye avec d'autres papiers a la poubelle. Si je me rend compte de cela a temps, je vais la chercher dans la corbeille. Mais si j'ai deja descendu la poubelle, cela va etre difficile de la retrouver, mais faisable (analogie avec les procedes complexes actuels de recuperation de fichier supprime). Dans cet exemple, mon systeme de fichier est la boite de rangement des fiches de paye.
      Une autre fonctionnalite du kernel qui manque (toujours d'apres moi), c'est la possibilite de supprimer le contenu du fichier (le remplir de zero par exemple). On pourait dire que tout fichier supprime de la corbeille (par l'utilisateur ou tous autres procedes), serait supprime definitivement suivant ce principe.

      Quand le systeme (un daemon par exemple) supprime un fichier suivant sa logique, il ne se trompe jamais. Il fait ce qu'on lui a dit de faire (ou a ete programme ainsi). Mais pour l'homme, c'est une autre histoire...

      C'est uniquement mon avis personnel ;)
      • [^] # Re: Recycled4Linux

        Posté par  . Évalué à 1.

        L'homme n'etant parfait, pour moi, tout systeme de fichier devrait contenir a la base, un mecanisme pour recuperer (ou garder) un fichier supprime par megarde. Ce mecanisme devrait etre le plus simple a utiliser.
        avec etx2, on pouvait faire une bidouille :
        http://recover.sourceforge.net/linux/recover/(...)
        a l'epoque j'avais trouver aussi un patch pour le kernel...

        Une autre fonctionnalite du kernel qui manque (toujours d'apres moi), c'est la possibilite de supprimer le contenu du fichier (le remplir de zero par exemple).
        shred ?
        • [^] # Re: Recycled4Linux

          Posté par  . Évalué à 1.

          Pourquoi voudrait tu le remplir de 0 ?
          Faire un secure flag ?
          Si c'est le cas je t'invite a lire le thread "secure flag" d'hacker@freebsd.org ou il est justement discuté de la chose. Je te laisse te faire ta propre opinion.

          Enfin pour résumer ca pose pas mal de problèmes :-)
          • [^] # Re: Recycled4Linux

            Posté par  . Évalué à 1.

            Merci car ce thread (http://lists.freebsd.org/pipermail/freebsd-hackers/2003-November/00(...)) est tres interessant sur un eventuel "secure file flag" !

            Tres complexe a mettre en place. : il faut mettre en place un niveau de securite que l'on veut atteindre, sinon c'est la folie.

            Une chose est sure, si vous achetez un logiciel pour supprimer vos fichiers de facon securise, on peux quand meme en recuperer des parties. Car le logiciel va simplement "vider" les blocks utilises par le fichier a supprimer a un instant t (l'instant de la suppression). Mais avant cela, vous avez travaille sur ce fichier, c'est a dire qu'avec le temps, il a libere des blocks a mesure qu'il variait de taille. Et ces blocks ne seront pas "vide" par ce logiciel car il ne les connait pas.

            @+
        • [^] # Re: Recycled4Linux

          Posté par  . Évalué à 1.

          C'est le reproche que je fait aux systemes de fichier actuels : les bidouilles pour recuperer un fichier supprime, en sachant que sur les systemes de fichier recents et complexes, c'est presque plus possible.

          Il existe un patch pour le kernel 2.0.x : http://amadeus.uprm.edu/~undelete/(...)
  • # Re: Recycled4Linux

    Posté par  (site web personnel) . Évalué à 1.

    Ça ne peut pas favoriser la fragmentation ça ? Moins d'espace disque réel libre => moins d'espace libre contigüe
    • [^] # Re: Recycled4Linux

      Posté par  . Évalué à 1.

      Je suppose, que tu veux dire que cela va favoriser la fragmentation.
      C'est exacte. Plus un systeme de fichier est plein, plus il est oblige de fragmenter le nouveau fichier qu'il veut ecrire, car il y a de moins en moins d'espace contigue.
      Il faut limiter la taille de la corbeille. Pas la peine d'avoir des fichiers supprimes, il y a six mois dans la corbeille. C'est pareil dans la vie courante ;)
  • # Re: Recycled4Linux

    Posté par  . Évalué à 1.

    très bon projet qui me sera très utile un jour
    j'aimerai pouvoir le tester, mais g 10 partiels à réviser :-(

    voilà un module à intégrer au noyau, puis une interface de conf KDE ;-)
    mais je vais trop vite en besogne.

    en tout cas, continue le projet, cette fonctionnalité est necessaire pour pas mal d'utilisateurs (notament pour mes parents et ma soeur ;-))
  • # Re: Recycled4Linux

    Posté par  (site web personnel) . Évalué à 2.

    Quelques suggestions pour améliorer l'anglais du message de présentation sur la page de garde de ton site :

    [quote]
    Recycled is a solution among others, to avoid losing your documents due to silly mistakes.

    How many times, I damned myself for having erased the wrong directory, the wrong file ? Have you never experienced such a trouble ?

    Ok, I made a mistake, but anyway, it shoud have been simple to recover it, don't you agree ?

    This project is an attempt to provide a durable solution. Hopefully, it would suit your needs !

    It is still a very young project (and the associate web site too). Please don't hesitate to discuss about it, this is the only way to improve it.

    Recycled for Linux, your mistakes will no longer cause the loss of a week of work ;)

    Recycled for Linux is written by Andre DUCLOS and is available as Free Software : it is distributed under the terms of the GPL.
    [/quote]

    Voila, juste quelques suggestions pour la forme. Je suis pas Anglais non plus donc si d'autres veulent me corriger ...

    Sinon, pour le fond, tu devrais peut-être plus détailler dès cet 'overview' le principe de fonctionnement de ton soft.

    Voili, voilou

    a+ et bonne continuation.
    • [^] # Re: Recycled4Linux

      Posté par  . Évalué à 1.

      Merci a toi.

      Un aimable contributeur m'a promis de modifier la page d'accueil de Recycled4Linux avec un texte plus "aguicheur". J'attend ses modifs.
      Mais en attendant, je modifie la page en question.
  • # Re: Recycled4Linux

    Posté par  . Évalué à 1.

    Je n'ai pas testé.... mais pourquoi le faire en mode kernel ?

    A priori on peut faire la meme chose en mode utilisateur en attaquant la libc plutot que les syscall du kernel.
    avantages:
    1/ mode user,
    2/ code plus simple, moins critique et disposant facilement d'un tas d'infos disponibles uniquement en mode user, possibilite de lire simplement un fichier de configuration (/etc/recycled.conf) ...
    3/ pas besoin de patcher la libc dans un premier temps un gros LD_PRELOAD suffit egalement.
    4/ compatible kernel 2.6 et 2.4-redhat (qui masquent les adresses des syscall aux modules)
    ...

    inconvenient: il est possible de bypasser le systeme en appelant le syscall directement.... ben ca parait autement improbable ou alors completement fait exprès :-))


    alors ?
    qu'ne pensez vous ??
    • [^] # Re: Recycled4Linux

      Posté par  . Évalué à 1.

      Ca existe deja : libtrash (le lien est sur mon site) qui utilise LD_PRELOAD

      Pour info :
      • Recycled4Linux (plutot bin/recycled) lit un fichier de conf /etc/recycled.conf et aussi /home/xxx/recycled.conf (le home est recupere dans /etc/passwd).
      • Recycled4Linux retrouve la sys_call_table cache par redhat pour le kernel 2.4.x et aussi pour tous les kernel 2.6.x.

      Le probleme est de passer le LD_PRELOAD aux comptes systemes.
      • [^] # Re: Recycled4Linux

        Posté par  . Évalué à 1.

        ok, merci pour ces precisions ma fois fort utiles :-))

        pour le LD_PRELOAD je pense que on peut le mettre dans /etc/ld.so.preload
        ou alors demander à init de le propager mais il y a egalement un autre soucis: les binaires setuid refusent de precharger des librairies dynamiques.

        sinon, ben je vais aller lire ton code qui a l'air plein de choses interessantes :-))
        • [^] # Re: Recycled4Linux

          Posté par  . Évalué à 1.

          Et n'oublies pas de me remonter toutes mes betises se trouvant dans mon code ;-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.