Cyril Brulebois a écrit 613 commentaires

  • # Une écriture un peu différente

    Posté par  (site web personnel) . En réponse au message Script pour vérifier si une chaîne de caractère existe dans le magic number. Évalué à 2. Dernière modification le 24 juillet 2019 à 15:00.

    Je te propose la structure suivante, qui devrait te permettre de travailler sereinement :

    find /un/point/de/départ -type f | while read f; do
      echo "Je suis en train de travailler sur $f"
      if xxd -l 0x06 "$f" | grep -qs '^00000000: XXXX YYYY ZZZZ'; then
        echo "$f correspond au motif recherché"
      else
        echo "$f ne correspond pas"
      fi
    done
    

    i.e. tu demandes à find de te dresser la liste de tous les fichiers, et tu fais une boucle dessus, fichier par fichier. Pour chacun, tu peux faire les tests de ton choix.

    Il est probable que tes fichiers .sh ne correspondent pas au magic number recherché, mais tu pourrais de toute façon les exclure en ajoutant un filtre sur le nom à l'appel find : ! -name '*.sh'

    Debian Consultant @ DEBAMAX

  • [^] # Re: /proc/sys/vm/overcommit_memory

    Posté par  (site web personnel) . En réponse au message pourquoi malloc peut échouer alors que linux utilise de la mémoire virtuelle. Évalué à 3.

    Alors, j'ai assez bon espoir que la page de manuel dans Ubuntu soit assez similaire à ce que j'ai dans Debian, qui détaille ceci :

    /proc/sys/vm/overcommit_memory
        This file contains the kernel virtual memory accounting mode. Values are:
    
        0: heuristic overcommit (this is the default)
        1: always overcommit, never check
        2: always check, never overcommit
    
        In mode 0, calls of mmap(2) with MAP_NORESERVE are not checked, and the default check is very weak, leading to the risk of getting a process "OOM-killed".
        In mode 1, the kernel pretends there is always enough memory, until memory actually runs out. One use case for this mode is scientific computing applications that employ large sparse arrays. In Linux kernel versions before 2.6.0, any nonzero value implies mode 1.
        In mode 2 (available since Linux 2.6), the total virtual address space that can be allocated (CommitLimit in /proc/meminfo) is calculated as
        CommitLimit = (total_RAM - total_huge_TLB) * overcommit_ratio / 100 + total_swap
        where:
    
        total_RAM is the total amount of RAM on the system;
        total_huge_TLB is the amount of memory set aside for huge pages;
        overcommit_ratio is the value in /proc/sys/vm/overcommit_ratio; and
        total_swap is the amount of swap space.
    
        For example, on a system with 16GB of physical RAM, 16GB of swap, no space dedicated to huge pages, and an overcommit_ratio of 50, this formula yields a CommitLimit of 24GB.
        Since Linux 3.14, if the value in /proc/sys/vm/overcommit_kbytes is nonzero, then CommitLimit is instead calculated as:
        CommitLimit = overcommit_kbytes + total_swap
        See also the description of /proc/sys/vm/admiin_reserve_kbytes and /proc/sys/vm/user_reserve_kbytes. 
    

    Et la description des différents modes me semble bien expliquer ce que tu cherchais à comprendre, non ?

    (Pour la visualiser en ligne : https://manpages.debian.org/buster/manpages/proc.5.en.html)

    Debian Consultant @ DEBAMAX

  • # /proc/sys/vm/overcommit_memory

    Posté par  (site web personnel) . En réponse au message pourquoi malloc peut échouer alors que linux utilise de la mémoire virtuelle. Évalué à 5.

    Regarde le mécanisme d'overcommit, par exemple dans man 5 proc.

    Debian Consultant @ DEBAMAX

  • [^] # Re: on sort le fer à souder

    Posté par  (site web personnel) . En réponse au message Ma souris est buggée. Évalué à 2.

    Après comme tu le signales, ça reste un produit défectueux sur toute leur gamme

    Qu'on soit bien d'accord, c'est la plupart de leurs produits qui sont désormais équipés de ce composant. Et pas : un seul produit touché parmi tous les autres qui sont épargnés.

    Bottom-line (qui n'engage que moi) : leur premier prix est probablement un meilleur choix que n'importe quel autre modèle.

    Debian Consultant @ DEBAMAX

  • [^] # Re: on sort le fer à souder

    Posté par  (site web personnel) . En réponse au message Ma souris est buggée. Évalué à 3.

    Omron c'est justement ce qu'il y a dans les Logitech haut de gamme, et c'est justement le composant bien foireux dessus quand il s'agit de 50M.

    Quelques pointeurs : Cyril hallucine et Jo hallucine.

    Debian Consultant @ DEBAMAX

  • # Formatage, puts, _start, etc.

    Posté par  (site web personnel) . En réponse au message aide en assembleur quand je lance objdump -M intel -DTCs ./a.out. Évalué à 1.

    Ce serait sympa de faciliter la vie des gens qui pourraient vouloir te répondre, en utilisant la syntaxe Markdown à disposition, au moins pour le code que tu cites.

    Pour celles et ceux qui voudraient avoir le code sous la main, il semblerait que ceci dans coucou.c suffise pour avoir des choses similaires, même si j'ai du puts au lieu de printf :

    #include <stdio.h>
    
    int main(void) {
      printf("coucou\n");
      return 0;
    }
    

    Puis gcc -o coucou coucou.c && objdump -S -x coucou | less pour voir plein de choses.

    Côté symboles non définis, on notera en particulier :

    0000000000000000       F *UND*  0000000000000000              puts@@GLIBC_2.2.5
    
    …
    
    0000000000000560 <puts@plt>:
     560:   ff 25 b2 0a 20 00       jmpq   *0x200ab2(%rip)        # 201018 <puts@GLIBC_2.2.5>
     566:   68 00 00 00 00          pushq  $0x0
     56b:   e9 e0 ff ff ff          jmpq   550 <.plt>
    

    et dans main l'appel avec le callq 560 <puts@plt> :

    00000000000006b0 <main>:
     6b0:   55                      push   %rbp
     6b1:   48 89 e5                mov    %rsp,%rbp
     6b4:   48 8d 3d 99 00 00 00    lea    0x99(%rip),%rdi        # 754 <_IO_stdin_used+0x4>
     6bb:   e8 a0 fe ff ff          callq  560 <puts@plt>
     6c0:   b8 00 00 00 00          mov    $0x0,%eax
     6c5:   5d                      pop    %rbp
     6c6:   c3                      retq   
     6c7:   66 0f 1f 84 00 00 00    nopw   0x0(%rax,%rax,1)
     6ce:   00 00 
    

    Sinon, _start est le point d'entrée, comme raconté ici par exemple → Introduction to the ELF Format (Part V) : Understanding C start up .init_array and .fini_array sections.

    Si ma réponse est trop loin du code que tu veux inspecter, ce serait bien de citer le code en question plutôt que la sortie de la décompilation de la compilation. ;p

    Debian Consultant @ DEBAMAX

  • [^] # Re: Vive la doc à jour

    Posté par  (site web personnel) . En réponse au message apt-add-repository -u par défaut. Évalué à 2.

    Aucun problème.

    Je t'invite à vérifier ce que ça raconte sur Launchpad ainsi qu'à vérifier la version la plus récente. Si la documentation n'est pas à jour dans la dernière version et s'il n'y a pas déjà de rapport de bogue sur Launchpad, en ouvrir un (si possible avec un correctif) serait chouette. :)

    Debian Consultant @ DEBAMAX

  • [^] # Re: difficile ....

    Posté par  (site web personnel) . En réponse au message Script awk : Afficher le nom du fichier en cours de traitement ?. Évalué à 1.

    En vrac : ça ne permet pas d'insérer un sort si c'est nécessaire, gérer la syntaxe particulière ({} et ;, ainsi que la position de la partie -exec au sein des paramètres de find) peut être compliqué, c'est plus difficile de garder une trace du nombre d'erreurs, etc.

    Et bien évidemment, cf. les avertissements concernant la sécurité de -exec et -execdir dans la page de manuel de find.

    Debian Consultant @ DEBAMAX

  • [^] # Re: simplifier la logique

    Posté par  (site web personnel) . En réponse au message Script awk : Afficher le nom du fichier en cours de traitement ?. Évalué à 3.

    Quitte à être tatillon : awk travaille sur des enregistrements plutôt que sur des lignes. Ce raccourci est compréhensible vu la valeur par défaut de RS, mais autant être précis ? ;)

    Debian Consultant @ DEBAMAX

  • # Vive la doc à jour

    Posté par  (site web personnel) . En réponse au message apt-add-repository -u par défaut. Évalué à 3.

    Comme -u est pour --update, on peut se poser la question d'un éventuel --no-update.

    Et ça semble être disponible d'après le code :

        parser.add_option("-n", "--no-update", action="store_false",
            dest="update", default=True,
            help=_("Do not update package cache after adding"))
        parser.add_option("-u", "--update", action="store_true",
            dest="update", default=True,
            help=_("Update package cache after adding (legacy option)"))

    Mon jeu de piste :

    Debian Consultant @ DEBAMAX

  • [^] # Re: difficile ....

    Posté par  (site web personnel) . En réponse au message Script awk : Afficher le nom du fichier en cours de traitement ?. Évalué à 7.

    On peut se poser la question d'itérer avec un for sur la sortie de ls (en vrai : à éviter), surtout quand awk peut gérer plusieurs fichiers d'entrée. Exemple en affichant le nom de chacun à chaque fois qu'on est sur la première ligne du fichier courant (« The input record number in the current input file ») :

    awk 'FNR == 1 {print FILENAME}' /var/www/cgi-bin/LPAR_MAP/*

    Si on veut d'une part autoriser autant de fichiers que possible et ne pas être limité par une quelconque limite de taille maximale pour une commande, et d'autre part éviter le cas d'erreur « l'expansion du motif n'a rien donné, donc on travaille sur un fichier dont le nom est exactement /var/www/cgi-bin/LPAR_MAP/* », favoriser find est une bonne idée :

    find /var/www/cgi-bin/LPAR_MAP -type f | while read file; do awk 'stuff' "$file"; done

    Avec un sort au milieu en option si l'ordre est important. Encore mieux avec -print0 et xargs -0 pour éviter les problèmes avec espaces et caractères spéciaux, mais je vais arrêter ma digression ici.

    Debian Consultant @ DEBAMAX

  • [^] # Re: PATH?

    Posté par  (site web personnel) . En réponse au message Debian 10 : commande usermod introuvable. Évalué à 1.

    ?!

    Après une installation avec debian-10.0.0-amd64-netinst.iso, en me connectant en root, j'ai bien les 3 paires de répertoires habituelles dans $PATH, à savoir {/usr/local,/usr,}{/sbin,/bin}, et usermod --help confirme que tout fonctionne correctement.

    Je ne vois pas trop le rapport avec merged-/usr par ailleurs.

    Debian Consultant @ DEBAMAX

  • # Tor Browser

    Posté par  (site web personnel) . En réponse à la dépêche Firefox 68 et 68 ESR par le menu. Évalué à 3.

    La version 8.5.4 de Tor Browser vient d'être publiée pour Android.

    Debian Consultant @ DEBAMAX

  • # Doc/exemple ?

    Posté par  (site web personnel) . En réponse au message probleme avec ioctl et rtc. Évalué à 3.

    As-tu regardé Documentation/rtc.txt et tools/testing/selftests/rtc/rtctest.c dans les sources du noyau ? Ça te donnera peut-être des indices ?

    Debian Consultant @ DEBAMAX

  • [^] # Re: Unetbootin

    Posté par  (site web personnel) . En réponse au message Media d'installation. Évalué à 3.

    +1.

    unetbootin est une source infinie de problèmes.

    Copier l'image sur une clé avec dd, pv, ou des outils dédiés comme gnome-disks (dont la barre de progression est réaliste, plutôt que de mesurer comme avec dd/pv la vitesse avec laquelle on remplit le cache)… ;)

    Côté Tails, ces jours-ci, on met en avant Etcher pour Windows.

    Cependant, pour Debian il existe un outil appelé win32-loader qui permet d'amorcer Debian Installer directement depuis Windows, cf. la page wikipedia en anglais et un lien direct vers un miroir.

    Disclaimer : N'ayant pas touché un Windows depuis longtemps, je n'ai pas vérifié son bon fonctionnement pour Buster…

    Debian Consultant @ DEBAMAX

  • [^] # Re: Un vrai problème

    Posté par  (site web personnel) . En réponse au journal Quelqu'un est en train de spammer les serveurs SKS. Évalué à 1.

    UI irréprochable, non ? :o)

    Après t'avoir répondu, je me suis demandé si keys.openpgp.org était le remède miracle apparu <théorie-du-complot>comme par hasard</théorie-du-complot> au moment où les floods SKS se sont intensifiés. Je suis tombé sur cette analyse d'un développeur Gentoo : SKS poisoning, keys.openpgp.org / Hagrid and other non-solutions. Des points un peu différents de ceux soulevés par Daniel Lange (qui intervient d'ailleurs en commentaires) mais globalement le même constat : la situation est loin d'être idéale et les « solutions » n'en sont pas vraiment.

    Debian Consultant @ DEBAMAX

  • [^] # Re: Un vrai problème

    Posté par  (site web personnel) . En réponse au journal Quelqu'un est en train de spammer les serveurs SKS. Évalué à 1.

    Alors, non, keys.openpgp.org ne m'aide pas du tout :

    kibi@anchorage:~$ gpg --keyserver keys.openpgp.org --search-keys torbrowser@torproject.org
    gpg: error searching keyserver: No data
    gpg: keyserver search failed: No data
    
    kibi@anchorage:~$ gpg --keyserver keys.openpgp.org --search-keys 0xD1483FA6C3C07136
    gpg: data source: http://keys.openpgp.org:11371
    (1)   4096 bit RSA key 4E2C6E8793298290
    Keys 1-1 of 1 for "0xD1483FA6C3C07136".  Enter number(s), N)ext, or Q)uit > 1
    gpg: key 4E2C6E8793298290: no user ID
    gpg: Total number processed: 1
    

    Debian Consultant @ DEBAMAX

  • # Un vrai problème

    Posté par  (site web personnel) . En réponse au journal Quelqu'un est en train de spammer les serveurs SKS. Évalué à 3.

    TL;DR: Je ne suis pas du tout convaincu par un certain nombre de commentaires dont le résumé pourrait être « aucun problème, tout va bien ».

    Je vais rester concis et éviter les digressions quant à GnuPG v1 vs. GnuPG v2, les formats différents, etc., et me concentrer sur un exemple.

    Pour la dernière version de Tails, j'étais en charge de l'import de Tor Browser. D'où vérification de signature GPG sur le build importé. D'où besoin de récupérer la clé en question. D'où --search-keys et boum :

    gpg: error writing keyring '/home/kibi/.gnupg/pubring.kbx': Provided object is too large
    

    Et effectivement, des centaines de milliers de clés, ça n'était pas trop prévu.

    Contournement : utiliser gnupg1 (heureusement qu'on a toujours ce paquet dans Debian…), importer la clé par ce biais, puis la ré-exporter en mode minimal (sans les signatures) pour la réimporter via gnupg2. Pour fixer les idées :

    gpg: key 4E2C6E8793298290: 121241 signatures not checked due to missing keys
    

    Quant à la vérification de la clé, l'empreinte est publiée et vérifiable par un autre canal, donc pas de problème de ce côté-là.

    Si on creuse un peu, on se rend compte qu'upstream s'est mis en tête de publier une version 2.2.17 en catastrophe pour essayer de limiter la casse. Et ça n'est pas forcément brillant, si j'en crois l'analyse de mon « collègue Debian » Daniel Lange (cf. la partie « Update » au 09.07.2019).

    [Depuis, j'ai découvert que le projet Tor publie également les clés sur un site dédié, ce qui m'évitera les contorsions mentionnées ci-dessus.]

    Debian Consultant @ DEBAMAX

  • [^] # Re: L'outil existe

    Posté par  (site web personnel) . En réponse au message Lister les modifications de conf. Évalué à 3.

    Effectivement, il y a dpkg qui sait si un des conffiles d'un paquet a été modifié par l'administrateur tandis qu'une nouvelle version du paquet embarque une configuration différente, et qui peut proposer un prompt pour choisir la version modifiée ou la nouvelle version. En fonction de la réponse, du côté interactif ou non, des options passées via apt/dpkg, on peut se retrouver avec des fichiers suffixés .dpkg-dist, .dpkg-old, .dpkg-new.

    Et il y a ucf qui permet d'être plus subtil que « version A ou version B », et de fusionner des modifications. Même si c'est bien mieux sur le papier, en pratique ça n'est presque pas utilisé. Sur mon système principal je vois 17 scripts postinst qui contiennent ucf, sur 4400+ paquets… Il y a probablement plus malin pour faire l'équivalent de la manipulation debsums (avec les bonnes options) ou dpkg --audit, directement avec ucf, mais de mon côté je vérifierais les paquets éventuellement concernés par des modifications de type ucf via grep -l ucf /var/lib/dpkg/info/*.postinst.

    Debian Consultant @ DEBAMAX

  • [^] # Re: Disques HS ?

    Posté par  (site web personnel) . En réponse au message Disque dur SSHD Firecuda ne marche pas avec Linux. Évalué à 1.

    C'est probablement un jugement de valeur, mais je trouve cela plutôt rassurant que le chargeur de démarrage arrive bien à faire son boulot, et qu'il « suffise » de disposer d'un noyau avec un correctif ou d'une option qui évite de tomber sur le bogue en question… J'avais peur qu'il y ait un problème entre le firmware UEFI et le chargeur de démarrage. :)

    Vu la cadence infernale côté mainline et la « rétroportabilité » habituelle de pleins de patches, j'imagine que des corrections pourraient arriver facilement dans les branches stable/longterm et dans les distributions…

    Debian Consultant @ DEBAMAX

  • [^] # Re: rhha toujours la même chose …

    Posté par  (site web personnel) . En réponse au message Informaticien expérimenté recherche emploi en télétravail ou dans l'est Lyonnais . Évalué à 4.

    Ta publication me paraît tout à fait appropriée, et je comprends également l'aspect potentiellement hyper-modulable de la rémunération en fonction des missions confiées et des clients en question.

    Je t'invite à ne pas te laisser décourager par le trolling malheureusement habituel sur ce site.

    Debian Consultant @ DEBAMAX

  • # Analyse incomplète/incorrecte ?

    Posté par  (site web personnel) . En réponse au message probleme pour désactiver au démarrage gdm. Évalué à 4.

    cosmoff :

    il est toujours enabled

    Je ne comprends pas car normalement systemctl gere systemd, donc il devrait me passer le service en disabled.

    Non, il n'est pas enabled. Cf. la ligne :

     Loaded: loaded (/lib/systemd/system/gdm.service; static; vendor preset: enabled)
    

    C'est le vendor preset qui est activé. Le service est en mode static, qui est une variante de disabled.

    Cf. la page de manuel systemctl(1) :

               ├──────────────────┼──────────────────────────────┼───────────┤
               │"static"          │ The unit file is not         │ 0         │
               │                  │ enabled, and has no          │           │
               │                  │ provisions for enabling in   │           │
               │                  │ the "[Install]" unit file    │           │
               │                  │ section.                     │           │
               ├──────────────────┼──────────────────────────────┼───────────┤
    …
               ├──────────────────┼──────────────────────────────┼───────────┤
               │"disabled"        │ The unit file is not         │ > 0       │
               │                  │ enabled, but contains an     │           │
               │                  │ "[Install]" section with     │           │
               │                  │ installation instructions.   │           │
               ├──────────────────┼──────────────────────────────┼───────────┤
    

    À vue de pif, je dirais qu'autre chose se charge de lancer le gestionnaire de connexion graphique. Un exemple sur Debian :

    kibi@armor:~$ systemctl cat graphical.target 
    # /lib/systemd/system/graphical.target
    #  This file is part of systemd.
    #
    #  systemd is free software; you can redistribute it and/or modify it
    #  under the terms of the GNU Lesser General Public License as published by
    #  the Free Software Foundation; either version 2.1 of the License, or
    #  (at your option) any later version.
    
    [Unit]
    Description=Graphical Interface
    Documentation=man:systemd.special(7)
    Requires=multi-user.target
    Wants=display-manager.service
    Conflicts=rescue.service rescue.target
    After=multi-user.target rescue.service rescue.target display-manager.service
    AllowIsolate=yes
    
    
    kibi@armor:~$ systemctl cat display-manager.service
    # /lib/systemd/system/lightdm.service
    [Unit]
    Description=Light Display Manager
    Documentation=man:lightdm(1)
    After=systemd-user-sessions.service
    
    [Service]
    # temporary safety check until all DMs are converted to correct
    # display-manager.service symlink handling
    ExecStartPre=/bin/sh -c '[ "$(cat /etc/X11/default-display-manager 2>/dev/null)" = "/usr/sbin/lightdm" ]'
    ExecStart=/usr/sbin/lightdm
    Restart=always
    BusName=org.freedesktop.DisplayManager
    

    Et cette unité display-manager.service est mise en place par le script de post-installation de lightdm. Extrait :

    if [ "$1" = "configure" ];
    then
      invoke-rc.d dbus reload || true
    
      # set default-display-manager systemd service link according to our config
      if [ -e "$DEFAULT_DISPLAY_MANAGER_FILE" -a -d /etc/systemd/system/ ]; then
        SERVICE=/lib/systemd/system/$(basename $(cat "$DEFAULT_DISPLAY_MANAGER_FILE")).service
        if [ -e "$SERVICE" ]; then
          ln -sf "$SERVICE" /etc/systemd/system/display-manager.service
        else
          echo "ERROR: $SERVICE is the selected default display manager but does not exist" >&2
        fi
      fi
    fi
    

    Cela doit être similaire pour les autres display managers.

    À voir en fonction de ta distribution (que tu n'as pas spécifiée).

    Debian Consultant @ DEBAMAX

  • # non-free s'écrit en un mot

    Posté par  (site web personnel) . En réponse au message Debian problème Sources.list Erreur de lecture du fichier. Évalué à 5.

    La prochaine fois, coller l'intégralité du fichier /etc/apt/sources.list (et des éventuels autres fichiers sous /etc/apt/sources.lists.d) serait une bonne idée.

    D'après la sortie, je suis assez certain que c'est non-free qui est mal orthographié, d'où la recherche des composants non et free

    Debian Consultant @ DEBAMAX

  • [^] # Re: xournal

    Posté par  (site web personnel) . En réponse au message Comment signer un PDF ?. Évalué à 3.

    C'est différent car il n'y a absolument rien à faire : on a directement accès à l'image détourée qui avait été initialement utilisée. Pour éviter cela il faudrait passer par un rendu de type « bitmap » plutôt que le PDF habituellement en vectoriel auquel on a ajouté un fichier image. Mais là, il faut choisir la résolution avec laquelle on fait le rendu. Et la taille/l'utilisation disque peuvent exploser…

    Debian Consultant @ DEBAMAX

  • # xournal

    Posté par  (site web personnel) . En réponse au message Comment signer un PDF ?. Évalué à 4.

    J'utilise xournal pour signer des PDF depuis très longtemps et j'en suis plutôt content. Pas eu de retour négatif de la part des différents services/professionnels concernés.

    Attention cependant, quand tu génères un export en PDF, il est très possible que l'image de la signature soit incorporée sous forme d'une image qui se superpose au reste. D'où un éventuel risque de réutilisation…

    Exemple avec un CERFA « Soins reçus à l'étranger » (12267*04) signé avec xournal :

    $ mutool info 2019-06-26-demande-remboursement-signee.pdf 
    2019-06-26-demande-remboursement-signee.pdf:
    
    PDF-1.5
    Info object (142 0 R):
    <</Creator(cairo 1.14.8 \(http://cairographics.org\))/Producer(cairo 1.14.8 \(http://cairographics.org\))>>
    Pages: 2
    
    Retrieving info from pages 1-2...
    Mediaboxes (1):
        1   (21 0 R):   [ 0 0 595.22 842 ]
    
    Fonts (21):
        1   (21 0 R):   Type0 'BSYCBJ+TimesNewRomanPS-BoldMT' (5 0 R)
    
    [Sortie tronquée : 21 références au total]
    
    Images (1):
        1   (21 0 R):   [ Flate ] 664x244 8bpc DevRGB (20 0 R)
    

    Extraction :

    $ mutool extract -r 2019-06-26-demande-remboursement-signee.pdf 
    extracting image img-0020.png
    extracting image img-0022.png
    extracting font MBBGFV+TimesNewRomanPS-BoldMT-0039.cff
    [Sortie tronquée : 21 références au total]
    
    $ file img-0022.png
    img-0022.png: PNG image data, 664 x 244, 8-bit/color RGB, non-interlaced
    

    Et hop, signature prête à être réutilisée…

    Debian Consultant @ DEBAMAX