Cyril Brulebois a écrit 670 commentaires

  • [^] # Re: Logs noyau ?

    Posté par  (site web personnel) . En réponse au message Debian 10 Buster : Problème iptables/nftables avec Docker. Évalué à 1.

    Ça ressemble beaucoup à ce que j'évoquais… Il semblerait qu'il n'y ait pas de nf_nat.ko et xt_conntrack.ko chargeable pour ton noyau, du coup paf ?

    Debian Consultant @ DEBAMAX

  • # Logs noyau ?

    Posté par  (site web personnel) . En réponse au message Debian 10 Buster : Problème iptables/nftables avec Docker. Évalué à 1.

    Déjà vu des blagues similaires sur une machine où on essayait de configurer un VPN. Au final, iptables (c'était il y a quelques années déjà) renvoyait des erreurs similaires sur la gestion des routes et du forwarding, mais le problème fondamental était que lancer ces commandes nécessitait de charger des modules noyau. Or cette machine avait un nouveau noyau, n'avait pas encore redémarré dessus, et le chargement de modules échouait.

    Bref, je suggère de vérifier dmesg et assimilés. Quant au noyau OVH, je ne suis pas sûr de comprendre pourquoi il faut se fader ce genre de choses…

    Debian Consultant @ DEBAMAX

  • [^] # Re: LC_ALL, LC_CTYPE

    Posté par  (site web personnel) . En réponse au message Problème encodage et ls . Évalué à 1.

    Je ne vois pas trop le rapport avec dpkg. Si tu es sur une distribution (basée sur) Debian, c'est l'installation et la configuration du paquet locales qui permettent de jouer sur le contenu des fichiers /etc/environment et /etc/default/locale. Sur le même système que précédemment, /etc/environment est vide et le /etc/default/locale contient :

    #  File generated by update-locale
    LANG=en_GB.UTF-8
    LANGUAGE="en_GB:en"
    

    (Cf. dpkg-reconfigure locales pour changer la configuration et le contenu de ce fichier par effet de bord.)

    Le contenu que tu cites ressemble à une tentative de la personne qui a buildé ton image de faire disparaître toutes les warnings (notamment niveau Perl) concernant des locales non configurées, en positionnant cette variable une seule fois dans ce fichier. Ça devrait probablement ne pas rester dans ce fichier une fois l'image préparée… (Mais je joue aux devinettes, je peux me tromper… ;p)

    Debian Consultant @ DEBAMAX

  • # LC_ALL, LC_CTYPE

    Posté par  (site web personnel) . En réponse au message Problème encodage et ls . Évalué à 4.

    La variable LC_ALL prend le pas sur tout le reste…

    Sur un environnement configuré en anglais britannique et en UTF-8 :

    $ locale
    LANG=en_GB.UTF-8
    LANGUAGE=
    LC_CTYPE="en_GB.UTF-8"
    LC_NUMERIC="en_GB.UTF-8"
    LC_TIME="en_GB.UTF-8"
    LC_COLLATE="en_GB.UTF-8"
    LC_MONETARY="en_GB.UTF-8"
    LC_MESSAGES="en_GB.UTF-8"
    LC_PAPER="en_GB.UTF-8"
    LC_NAME="en_GB.UTF-8"
    LC_ADDRESS="en_GB.UTF-8"
    LC_TELEPHONE="en_GB.UTF-8"
    LC_MEASUREMENT="en_GB.UTF-8"
    LC_IDENTIFICATION="en_GB.UTF-8"
    LC_ALL=
    

    il suffit de positionner LC_TIME=C pour reproduire le problème d'affichage par ls.

    Plus d'infos sur https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap07.html. Extrait :

    LC_CTYPE
        Character classification and case conversion.
    

    Ne pas toucher à LC_TIME mais positionner LC_ALL=C produit le même effet, vu l'override mentionné au début.

    Debian Consultant @ DEBAMAX

  • # find est ton ami

    Posté par  (site web personnel) . En réponse au message Renommage en masse selon métadonnées.. Évalué à 3.

    Tu utilises :

    #!/bin/bash
    for src in src/*.mp4 ; do
    heure=$(exiftool -DateTimeOriginal ${src} |sed -e 's/^.*: //')
    cp ${src} dst/"${heure}.mp4"
    done
    

    En fonction du shell, tu peux probablement feinter pour ignorer la casse, mais ceci est portable : find src -type f -iname '*.mp4' (tu peux jouer avec -name versus -iname et/ou regarder la documentation).

    Pour ajouter le nom, tu as la variable $src qui peut servir. Tu peux extraire le nom du fichier avec basename (cf. aussi dirname).

    Pour la verbosité, cp, mv, etc. ont une option -v. Sinon tu peux faire du echo ou printf toi-même.

    Bonnes évolutions.

    Debian Consultant @ DEBAMAX

  • [^] # Re: Tu as loupé une étape

    Posté par  (site web personnel) . En réponse au message problème Debian 10 stable. Évalué à 1. Dernière modification le 26 juillet 2019 à 20:56.

    Non, si on spécifie un mot de passe root.

    Oui, si on ne spécifie pas de mot de passe root.

    Ça n'est pas excessivement nouveau :

    commit d325ddcc0835380eca91d6e485ba7c9fbdc1fc6f
    Author: Christian Perrier <bubulle@debian.org>
    Date:   Sun Sep 19 06:56:24 2010 +0000
    
        Add the newly created user to the sudo group if root is disabled
        to be inline with introduction of the sudo group in sudo
        1.7.2-2. Closes: #597239
    
        r64799
    

    Debian Consultant @ DEBAMAX

  • [^] # Re: Lit tes cours / demande à ton prof ?

    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é à 3. Dernière modification le 25 juillet 2019 à 08:01.

    En même temps, quelle idée d'utiliser `commande` au lieu de $(commande) ? :)

    C'est probablement une histoire de goût/habitude, mais que ça soit pour la lisibilité ou la facilité d'imbrication, je conseille chaleureusement la deuxième forme.

    Pour les histoires de gestion d'espace, si on est parti pour faire une boucle, pourquoi s'amuser à utiliser for qui déclenche un découpage par mot plutôt que de passer par un while qui découpe par ligne ?

    Debian Consultant @ DEBAMAX

  • # 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