Fabien a écrit 132 commentaires

  • [^] # Re: pidof ?

    Posté par  (site web personnel) . En réponse au message traquer un process par son pid. Évalué à 2.

    Effectivement, la première partie des commentaires est intéressante.
    Je crois qu'il ne me reste plus qu'à espérer des ajouts à netlink.

  • [^] # Re: pidof ?

    Posté par  (site web personnel) . En réponse au message traquer un process par son pid. Évalué à 2.

    Pour le dernier lien, ça utilise la crate procfs quand utilisé sous Linux.
    J'avais déjà regardé, ça parse les entrées de /proc.

    Quand je dis que je ne trouve pas cette solution "élégante", c'est parce que ça fait des read() (et autres accès fs).
    Bien que /proc soit un répertoire "spécial", ça reste moins pratique qu'une solution (apparemment inexistante) qui ferait une seule requête au noyau ("quels sont tous les descendants du Pid 1234").

    De plus, parser /proc ne retourne pas un instantané: le temps de lister et parser les infos des childs, un nouveau aurait pu apparaître.
    Du coup, lorsque je reçoit un Pid à monitorer, je dois d'abord activer le code ebpf pour ce Pid (traquer les fork, clone ..) puis parser /proc.

  • [^] # Re: pidof ?

    Posté par  (site web personnel) . En réponse au message traquer un process par son pid. Évalué à 1.

    Utilisant ebpf, mon outil ne sera donc que Linux only.
    Je ne sais pas si les sockets netlink existent sur les autres noyaux.

    J'ai regardé le fonctionnement de tous les outils que j'ai pu trouvé, ils utilisent tous /proc pour récupérer les informations.
    Je ne trouve pas ça très élégant (voir même peu performant), mais je vais devoir faire la même chose pour trouver les fils et les sockets déjà connectées.
    Pour les events, ce sera programmes et maps ebpf.

  • [^] # Re: Prendre l'inspiration dans les sources de systemd ?

    Posté par  (site web personnel) . En réponse au message traquer un process par son pid. Évalué à 1.

    J'ai commencé à fouiller un peu, mais j'ai l'impression que systemd utilise beaucoup les cgroup .

    Une option intéressante, et ajoutée par les dev de systemd au noyau, est l'option PR_SET_CHILD_SUBREAPER pour prctl():
    avec cette option, un processus père peut récupérer ses "petits enfants" à la place du pid 1 quand ses childs se terminent.

    Je ne peux pas utiliser cette option, car je fonctionne en mode client/serveur avec une socket UNIX.
    Le client vérifie les options de la commande et démarrera les commandes à limiter si besoin, et on peut limiter des process déjà démarrés.
    Il envoie la requête au daemon, attend la réponse et se termine.
    Le daemon se charge de configurer le système, il ne reçoit que les pid à limiter.

    Les commandes d'admin habituelles (ss, netstat, lsof, ps, ..) utilisent toutes /proc, il n'y a peut être pas d'autres solutions.

  • [^] # Re: pidof ?

    Posté par  (site web personnel) . En réponse au message traquer un process par son pid. Évalué à 1.

    Je connais les PID des processus à monitorer.

    Je veux réagir au plus vite à la création de leur descendance, récupérer les PIDs des childs pour les monitorer eux aussi.
    Puis, je dois lister tous les 4-tuples des sockets "connectées" (syscall accept ou connect) et réagir à la création de nouveaux 4-tuples sockets de ces pids (je gère déjà la fin de vie des 4-tuples grâce à netlink sock_diag).

    En détails, mon programme est un limiteur de bande passante à la trickle, mais il permet de limiter des process (à démarrer ou déjà démarrés), des cgroup (v2) ou des sockets, les grouper et surtout modifier les limites. La partie limiteur est assurée par des qdisc sur 2 ifb, le match des packets réseau est fait par du code ebpf et le redirect vers l'ifb concerné avec un filtre tc.

  • [^] # Re: Ça s'appelle ptrace(2), non ?

    Posté par  (site web personnel) . En réponse au message traquer un process par son pid. Évalué à 1.

    Maj: le système d'audit du kernel ne permettant d'utiliser qu'un seul programme en userspace, ça disqualifie cette solution.

  • [^] # Re: Ça s'appelle ptrace(2), non ?

    Posté par  (site web personnel) . En réponse au message traquer un process par son pid. Évalué à 1.

    ptrace me fournira le même genre d'infos que netlink-audit mais ça risque d'être plus "lourd" (je dois pouvoir réagir aux events d'un nombre indéterminé de process).

    Sinon, j'ai utilisé strace pour inspecter les requêtes netlink-route faites par ip link/addr pour m'en inspirer.

  • # CSS alternatives

    Posté par  (site web personnel) . En réponse à l’entrée du suivi les longs noms d'utilisateurs ne s'affichent pas bien dans la tribune. Évalué à 1 (+0/-0).

    J'utilise contrib/kaiska-new et l'affichage du pseudo de ce vandale est pire que celui présenté.
    Du coup, je propose de bannir ce voyou … ou le renommer … ou trouver une solution "globale".
    A voir selon le code de la page, mais tronquer le nom affiché pourrait peut être régler le souci pour toutes les CSS ?

  • # peut être une piste

    Posté par  (site web personnel) . En réponse au message obsd/ efi/gpt /multiboot. Évalué à 3.

    Regarde ici : https://srobb.net/openbsdmultiboot.html

    mais apparemment tu es bloqué après la sauvegarde de la table de partition.
    Soit tu rencontres un bug, soit tu utilises mal fdisk.
    Au passage, si tu consultes la doc de fdisk, soit sûr d'utiliser la doc d'OpenBSD.

    La doc du précédent lien semble indiquer que cette étape de fdisk sert à positionner un flag sur la partition pour la "marquer" comme étant une partition OpenBSD.
    Essaye de changer le type de partition depuis Linux avec l'outil de ton choix, puis retourner sur l'installation d'OpenBSD pour voir si ça te permet de passer à l'étape suivante.

  • # Quelques idées

    Posté par  (site web personnel) . En réponse au message Rust, Haskell, composition, monad et arrow. Évalué à 2.

    Regarde du côté de Result

    Ca peut donner quelque chose du genre

    let img = preprocessing(input) // prepocessing: fn(input) -> img1
    .and_then(traitement1) // traitement1: fn(img1) -> img2
    .and_then(traitement2) // traitement2: fn(img2) -> i
    .and_then(traitement3) // traitement3: fn(i) -> (i, img3)
    .and_then(traitement4)?; // traitement4: fn((i, img3) -> img4

    Si tu es aventureux, tu peux regarder sur crates.io s'il n'y a pas des crates fournissant ces monades.

    Et en règle générale, il n'est pas recommandé d'écrire du Rust en pensant aux idiomes d'un autre langage.

  • # Mon expérience

    Posté par  (site web personnel) . En réponse au message Ultraportable : recherche de la perle rare. Évalué à 3.

    J'ai eu 2 ultra portables.

    • un MSI de la série X-slim (l'un des tous premiers de ce segment je crois)
    • un Asus Zenbook (l'un des premiers modèles de cette série)

    J'utilise toujours le MSI et j'en suis satisfait. Malgré ses presque 10 ans, il n'a jamais eu de souci.

    Par contre, le Asus, bien qu'un peu moins vieux (et beaucoup plus costaud que le MSI), me sert de dessous de plat.
    Depuis un orage et une coupure de courant en Asie, il me rend chèvre: brancher ou débrancher le connecteur d'alimentation provoque une coupure instantanée. Remplacer la petite partie de la carte mère qui gère la prise d'alimentation ainsi que l'adaptateur secteur n'a rien changé.
    Et récemment, lorsque qu'il est branché sur le secteur, il provoque une coupure de mon réseau CPL (même éteint, car il a l'option de recharge USB autonome).

    Cette mésaventure avec mon Asus n'a sûrement encore aucun intérêt pour ton choix, mais je pense que l'une des raisons de mes soucis avec ce laptop vient aussi du fait que ce soit un ultrabook: toutes les prises de connexions sont les plus petites possibles:
    - MSI: port Ethernet classique, port HDMI classique, port d'alimentation d'une taille "normale"
    - Asus: pas de port Ethernet (Wifi ou adaptateur USB/Ethernet), prise mini HDMI, port d'alim très petit

    Pour la prise Ethernet, ça ne peut poser aucun souci si le wifi te suffit.
    Le mini HDMI est une horreur, le câble se débranchant au moindre mouvement, voir même de part son poids/rigidité si mal calé.
    Le mini port d'alimentation aussi se débranche seul, provoquant une grande partie de mes soucis avec ce portable.

    Du coup, mon seul conseil est de se méfier de cette réduction extrême de taille/poids des utltrabooks et de ses connectiques.

    Si je devais regarder aujourd'hui pour ce type de produit, je ferais attention à ces critères, et le nouveau ultra de xiaomi ferait parti des possibilités.

  • [^] # Re: Chiffrement du FS complet

    Posté par  (site web personnel) . En réponse au message Partitions chiffrées, sauvegardes: comment gérer son système informatique. Évalué à 1.

    Peut être parce que l'on peut modifier ton système à ton insu.
    La condition étant que l'attaquant puisse "t'emprunter" ton matériel discrètement, il reste intéressant de ne chiffrer que le /home pour protéger les données persos d'un vol matériel par exemple.
    Pour une meilleure protection, il faut tout chiffrer, /boot y compris.

    Il me semble que j'ai eu un Linux totalement chiffré, en dual boot avec un Windows.
    Je faisais un rsync du /boot sur une clef USB et y installais grub.
    Pour démarrer Linux, il suffisait de connecter la clef et de changer l'ordre du boot (je pouvais le faire sans modifier le bios).
    Sans clef USB, l'ordi bootait sur Windows.

    PS: pour la méthode du full encrypted, il faut prévoir une méthode de secours en cas de perte/dégradation/… de la clef USB.
    Sauvegarder quelque part les mdp/clef de la/les partitions chiffrées quelque part semble un bon point de départ.

  • [^] # Re: Avantages / Inconvénients face aux REDIS, MongoDB, ou CouchDB...

    Posté par  (site web personnel) . En réponse à la dépêche Libération de FoundationDB. Évalué à 2.

    Dans le même genre, il existe:
    Cockroachdb
    Tikv

    le premier est "compatible" Postgresql, alors que le second est "compatible" Mysql

    FoundationDB ne propose pas ce genre de compatibilité mais il semble qu'un proof-of-work existe

  • [^] # Re: C'est fort

    Posté par  (site web personnel) . En réponse au journal Let's Encrypt, Nginx et Wordpress. Évalué à 2.

    Pour faire plus simple, il y a moyen d'utiliser wp-cli pour faire des 'search and replace'
    Je suppose qu'au final, ça revient à faire un grep, mais on évite le dump et reload de la db

  • [^] # Re: celery + rabbitmq

    Posté par  (site web personnel) . En réponse au message Réagir à des données expirées (date) en DB. Évalué à 1.

    Merci,
    cette solution me semble robuste, s'intégrera bien avec le reste de mon écosystème
    et non bloquante en cas de recherche de haute disponibilité.

  • [^] # Re: Et les étudiants ?

    Posté par  (site web personnel) . En réponse au sondage Êtes-vous prof ?. Évalué à 7.

    Du coup, vu la part de marché des BSD, voir même Linux, pourquoi continuer à perdre son temps, migrons sur Windows …

  • [^] # Re: PaySafeCard

    Posté par  (site web personnel) . En réponse au journal MEGA c'est louche . Évalué à 1.

    Tu peux chercher le point de vente le plus proche de chez toi sur le site de paysafecard, apparemment, ton petit tabac n'a pas de cigarettes mais ce type de carte.

  • # Quel contrôleur ?

    Posté par  (site web personnel) . En réponse au message Voir si le raid hardware est ok. Évalué à 2.

    Quel serveur utilises-tu ? quel contrôleur raid ?

    sinon, la doc est ici http://documentation.online.net/fr/serveur-dedie/materiel

    Les solutions décrites fonctionnent bien.
    Si tu as un serveur HP et une distrib en 64bits, fais moi signe afin que je t'indique une solution au problème que tu auras.

  • [^] # Re: ASUS UX

    Posté par  (site web personnel) . En réponse au message Choix d'un ultrabook. Évalué à 1.

    oui, reconnu et fonctionne sans problème.

  • [^] # Re: ASUS UX

    Posté par  (site web personnel) . En réponse au message Choix d'un ultrabook. Évalué à 1.

    Le UX31E était fourni avec une version de seven.

  • # ASUS UX

    Posté par  (site web personnel) . En réponse au message Choix d'un ultrabook. Évalué à 2.

    Je possède depuis plus d'un an un ASUS ultrabook UX31E:
    Core i7, 4Gb de ram, ssd 256go, cg intel, écran 1600x900 …

    Mes reproches :
    - un clavier qui bouffe certaines frappes (il m'oublie des lettres de temps en temps)
    - un écran brillant

    pour le reste, c'est pas mal, j'utilise le windows7 fourni et une debian full encrypted (avec quelques optimisations glanées sur le net concernant le ssd).

    Tu peux regarder sa version UX31A :
    - écran mat full hd
    - clavier rétro-éclairé (peut être de meilleure qualité).

    PS: je possède aussi un MSI Slim, bien plus vieux et moins performant mais tout aussi fiable au vue de l'utilisation intensive que j'en fais.

  • [^] # Re: Tri au niveau du serveur central rsyslog

    Posté par  (site web personnel) . En réponse au message rsyslog et appender java. Évalué à 1.

    Voir la doc du filtrage de rsyslog

    L'exemple précédant fait parti de ma configuration rsyslog
    il utilise les "Property-Based Filters"

    Entraîne toi déjà sur le serveur central à maîtriser ce type de filtrage en utilisant les logs déjà présents sur le serveur ou en générant de faux logs avec la commande logger ( -t 'tag' pour configurer l'étiquette du message).
    Dès que tes règles seront en place, il ne te reste plus qu'à envoyer les logs de tes serveurs clients (tu peux utiliser cette technique de filtrage pour ne relayer que certains logs) vers le serveur central.

  • # Tri au niveau du serveur central rsyslog

    Posté par  (site web personnel) . En réponse au message rsyslog et appender java. Évalué à 3.

    Rsyslog est capable de trier les messages grâce aux facilities mais dispose d'autres critères.
    Il peut trier sur le contenu du message, le syslogtag et d'autres choses encore.

    Voici un exemple :

    :syslogtag, contains, "dovecot" /var/log/dovecot/dovecot.log
    :syslogtag, contains, "dovecot" ~

    Je trie sur le critère du tag du message, j'envoie les messages qui matchent vers un fichier spécifique.
    La deuxième ligne me permet ensuite d'ignorer les messages précédemment matchés afin qu'ils ne se retrouvent pas dans d'autres fichiers de logs (tel que mail.info … dans mon cas).

    L'idée est donc de regarder les critères de tri proposés (bien que celui du syslogtag soit efficace) et de formater tes messages sur les clients en fonction de ce tri.
    Tu peux par exemple ajouter un nom de machine aux syslogtags afin de séparer les logs d'une même application tournant sur plusieurs clients.

    N'oublie pas de configurer logrotate pour tous ces nouveaux fichiers.

  • [^] # Re: online ?

    Posté par  (site web personnel) . En réponse au message Cherche hebergeur de dédidé. Évalué à 1.

    raté, tu as mal lu les contraintes : "À l'exterieur de la France."

  • [^] # Re: Bind?

    Posté par  (site web personnel) . En réponse au message Frontal pour BIND. Évalué à 1.

    Sinon tu peux coupler nsd + unbound (Authoritative + Recursive).
    Pour l'instant je n'utilise que unbound qui fonctionne pas mal. Je vais bientôt lui ajouter nsd pour l'authoritative.
    Je pense que ce couple constitue une bonne alternative à bind, que je connais pourtant assez bien, mais la concurrence ne fait pas de mal.