Restrictions de l'unité de service Systemd : une cause fréquente d'échecs de démarrage des démons

2025-09-20

Un problème classique pour les administrateurs système Linux est qu'un démon ne parvienne pas à démarrer normalement, mais fonctionne correctement lorsqu'il est exécuté manuellement en tant que root. Les causes traditionnelles incluent des variables d'environnement $PATH incomplètes, SELinux et AppArmor. De plus en plus, les restrictions de l'unité de service systemd (documentées dans systemd.exec) sont les coupables. Des directives telles que ProtectHome et PrivateTmp peuvent entraîner des erreurs cryptiques de « permission refusée » ou de « fichier introuvable », voire des échecs indirects tels que le blocage des requêtes DNS. La suppression des restrictions du fichier .service du démon peut aider à diagnostiquer le problème, mais les démons futurs peuvent dépendre de ces restrictions, ce qui complique le dépannage.

Lire plus
Développement démon

Le Web Client Négligé : Pourquoi Personne ne se Soucie des Temps de Chargement Lents ?

2025-08-23

Cet article aborde la question souvent négligée des mauvaises expériences web côté client. Si les problèmes côté serveur dominent souvent les débats, l’auteur souligne la négligence constante des temps de chargement lents, des interfaces utilisateur peu ergonomiques et autres frustrations côté client. Prenant l’exemple de la récente mise à jour de Github, de nombreux utilisateurs signalent de faibles performances, mais les opérateurs de sites web privilégient les préoccupations côté serveur. L’auteur soutient que les sites web détiennent un pouvoir significatif, ne laissant aux utilisateurs que le boycott comme recours, lequel est largement inefficace. Les sites web manquent souvent de mesure efficace du taux de rebond des utilisateurs, contribuant à leur apathie envers les expériences côté client. Enfin, l’auteur admet avoir pris des décisions éditoriales susceptibles de nuire aux utilisateurs, mais les présente comme un compromis nécessaire.

Lire plus
Développement côté client

Reproduire pflog d'OpenBSD sous Linux : nftables et ulogd2

2025-08-16

Cet article détaille comment reproduire la fonctionnalité pratique pflog d'OpenBSD et FreeBSD sous Linux à l'aide de nftables et ulogd2 pour la journalisation et l'analyse des paquets réseau. En ajoutant des instructions « log group » aux règles nftables et en acheminant les journaux vers différents sockets netlink, vous pouvez utiliser tcpdump pour la surveillance en direct et ulogd2 pour la journalisation sur disque. L'article explique la configuration d'ulogd2, la journalisation dans des fichiers pcap et note les limitations et les alternatives à ulogd2.

Lire plus
Développement

La persistance inattendue des serveurs de connexion Unix traditionnels

2025-08-03

L'auteur explore l'utilisation continue surprenante des serveurs de connexion Unix traditionnels dans une reconstruction hypothétique de son environnement informatique en tant que développement moderne et de terrain vierge. Malgré la prévalence de la virtualisation des conteneurs, ils maintiennent deux types : un serveur à usage général avec des limites de CPU et de RAM, et des serveurs de calcul offrant un accès aux ressources illimitées. Bien que l'utilisation ait diminué, ces serveurs restent étonnamment pertinents, notamment pour le SSH sur des machines internes ou pour exécuter des backends pour des environnements de développement tels que VSCode. L'auteur note également l'utilisation des serveurs de connexion pour les travaux cron et la raison pour laquelle les utilisateurs stockent du code sur des serveurs de fichiers, ce qui est étroitement lié à l'utilisation de leur cluster SLURM et de leurs serveurs de calcul. L'absence d'un modèle de support robuste rend difficile le suivi de l'utilisation exacte.

Lire plus

Analyseurs descendants récursifs : la simplicité l'emporte-t-elle sur la complexité ?

2025-07-28

L'auteur explore les approches d'analyse des langages informatiques, en comparant spécifiquement les analyseurs descendants récursifs aux générateurs d'analyseurs LR. Bien que les générateurs d'analyseurs LR gèrent des grammaires plus complexes, l'auteur privilégie les analyseurs descendants récursifs en raison de leur facilité d'utilisation, de leur indépendance vis-à-vis des outils externes et de leur capacité à être écrits directement dans le langage cible, minimisant ainsi la courbe d'apprentissage et les défis de débogage. Pour les développeurs qui doivent occasionnellement construire des analyseurs pour de petits langages, la simplicité et la facilité d'utilisation des analyseurs descendants récursifs surpassent leurs limites dans la gestion des grammaires complexes.

Lire plus

Débogage de scripts Bash : gestion élégante des erreurs `set -e`

2025-07-27

Cet article présente une astuce pour gérer élégamment les erreurs déclenchées par `set -e` dans les scripts Bash. En utilisant `trap 'echo "Exit status $? at line $LINENO from: $BASH_COMMAND"' ERR`, vous pouvez afficher des informations telles que le numéro de ligne de l'erreur, la commande ayant échoué et le statut de sortie lorsque le script rencontre une erreur, ce qui facilite le débogage. Cela exploite des fonctionnalités spécifiques à Bash : les variables d'environnement `$LINENO`, `$BASH_COMMAND` et la condition de piège `ERR`. D'autres shells comme sh peuvent se comporter différemment et pourraient ne pas prendre entièrement en charge cette fonctionnalité.

Lire plus
Développement débogage de scripts

La limitation curieuse de errno(3) sous Linux

2025-07-04

La page de manuel errno(3) de Linux révèle une limitation particulière : errno peut être modifié même lors d’appels de fonction réussis, et il n’est jamais défini sur zéro par un appel système ou une fonction de bibliothèque. Cela provient de la conception traditionnelle d’Unix, où les appels système retournent généralement errno uniquement en cas d’échec, le laissant inchangé en cas de succès. Les fonctions de bibliothèque C peuvent effectuer plusieurs appels système, dont certains peuvent échouer sans affecter le succès global de la fonction de bibliothèque, laissant errno avec la valeur d’échec. ANSI C et POSIX ont hérité de ce comportement, exigeant qu’errno soit significatif uniquement lorsqu’une fonction échoue et que sa documentation spécifie la définition d’errno.

Lire plus
Développement

L'essor inattendu des terminaux X : pas prévu dans la conception initiale de X

2025-06-23

X n'a pas été initialement conçu pour être utilisé avec des terminaux X. Les premiers systèmes X fonctionnaient sur des stations de travail complètes ; même les stations sans disque, bien qu'elles dépendaient des serveurs pour les tâches lourdes, disposaient toujours d'un environnement Unix local complet. Les terminaux X sont arrivés beaucoup plus tard, seulement après le succès de X en tant que système de fenêtres Unix multifournisseur. NCD, probablement parmi les premiers à produire des terminaux X, a été fondée en 1987, mais n'a probablement pas commercialisé de produit avant 1989. Cela est confirmé par l'arrivée tardive de XDM (X Display Manager), lancé avec X11R3 en octobre 1988. Bien qu'il soit techniquement possible d'utiliser des terminaux X sans XDM, sa présence a grandement simplifié le processus, indiquant que l'adoption des terminaux X a pris du retard par rapport à la maturation de X lui-même.

Lire plus
Technologie Terminaux X

Révolte des mainteneurs open source : le seul mainteneur de libxml2 ne priorise plus les problèmes de sécurité

2025-06-19

Le seul mainteneur de libxml2 a annoncé qu'il ne traiterait plus les problèmes de sécurité différemment des bogues, ce qui a suscité un débat au sein de la communauté open source. L'auteur soutient que cela reflète le mécontentement croissant des mainteneurs concernant l'exploitation du logiciel open source par les entreprises. Une distinction est faite entre l'open source personnel et coopératif (par exemple, Debian, BSD) et l'utilisation de l'open source par les entreprises à des fins lucratives. L'auteur prédit un avenir où la communauté open source mettra de plus en plus l'accent sur cette distinction, ce qui pourrait modifier les interactions avec les entreprises.

Lire plus
Développement maintenance communautaire

WireGuard : Saturation du réseau à 1 Gbps atteinte

2025-06-17

L'auteur pensait que le chiffrement était trop lent pour saturer le réseau, même sur un Gigabit Ethernet. Or, des tests récents ont révélé que WireGuard, fonctionnant sur des serveurs courants (Xeon E-2226G), a facilement saturé un réseau 1 Gbps sans réglage particulier, avec une faible utilisation du processeur. Cela remet en question les hypothèses de l'auteur sur la vitesse de chiffrement, suggérant que de nombreuses méthodes pourraient théoriquement saturer un lien 1 Gbps, et soulignant le besoin d'optimiser les performances des serveurs VPN existants.

Lire plus

Limitation de l'imbrication des groupes mutuellement exclusifs d'Argparse : une énigme frustrante

2025-06-14

Le module argparse de Python, bien qu'il offre des fonctionnalités pratiques pour gérer les arguments de ligne de commande, y compris les groupes mutuellement exclusifs, présente une limitation frustrante en matière d'imbrication. Prenons l'exemple d'un programme avec plusieurs paramètres de délai d'expiration où les utilisateurs peuvent ajuster les délais d'expiration individuels ou les désactiver complètement. Argparse ne prend pas en charge l'imbrication d'une option « pas de délai d'expiration » dans un groupe d'options de délai d'expiration individuelles, ce qui rend la configuration fastidieuse. Bien qu'il soit possible d'imbriquer un groupe mutuellement exclusif dans un groupe régulier, l'inverse n'est pas pris en charge, et la documentation officielle indique explicitement cette limitation. Cela oblige les développeurs à vérifier manuellement si des options spécifiques ont été utilisées, ce qui ajoute de la complexité.

Lire plus
Développement

Inode 0 d'Unix : Un coin oublié

2025-06-02

Cet article explore les limitations des numéros d'inode dans les anciens systèmes Unix et le cas particulier de l'inode 0. L'auteur a constaté que, bien que la norme POSIX n'interdise pas explicitement l'utilisation de l'inode 0, de nombreux systèmes et programmes peuvent dépendre de numéros d'inode non nuls en pratique. L'utilisation de l'inode 0 peut entraîner des comportements inattendus, car certains programmes peuvent l'interpréter comme un signal « fichier introuvable ». Bien qu'il soit possible d'expérimenter avec l'inode 0 à l'aide de systèmes de fichiers dans l'espace utilisateur, cela n'est pas recommandé en raison de problèmes de compatibilité potentiels et de résultats imprévisibles.

Lire plus
Développement

La course aux armements JavaScript Proof-of-Work contre les LLM

2025-05-28

Les sites Web utilisent de plus en plus des systèmes de preuve de travail basés sur JavaScript, comme Anubis de Xe Iaso, pour lutter contre les LLM et les gratte-pages Web agressifs. Cependant, les LLM peuvent exploiter des machines compromises pour obtenir une puissance de calcul CPU importante afin de résoudre ces défis. Le problème est que les LLM fonctionnent dans un environnement hostile, ce qui rend difficile la distinction entre une preuve de travail authentique et un JavaScript malveillant. Cela expose les LLM à l'exploitation minière de CPU ou à d'autres attaques. Essayer d'identifier les systèmes de preuve de travail est une partie perdue d'avance pour les LLM, car les acteurs malveillants ont intérêt à les imiter. Cela crée une course aux armements entre les sites Web et les LLM, chacun essayant d'optimiser l'utilisation des ressources tout en protégeant ses intérêts.

Lire plus
Développement Grattage Web

L'évolution des limites de longueur de nom de fichier sous Unix

2025-05-25

Les premières versions d'Unix avaient des limites de longueur de nom de fichier étonnamment courtes : initialement seulement 8 octets, puis augmentées à 14. Cela était lié à la conception simple de la structure de répertoire d'Unix. L'article examine en détail les structures de répertoire d'Unix V4 et des versions antérieures, expliquant les raisons de l'évolution de la limite de longueur de nom de fichier et comment les entrées de répertoire de 16 octets s'adaptent mieux aux blocs de disque de 512 octets. Il aborde également le nombre limité d'inodes dans les versions initiales d'Unix, reflétant certaines des limitations codées en dur des anciens systèmes.

Lire plus
Développement histoire d'Unix

Les dangers du tri des adresses IPv6 avec les outils Unix

2025-05-19

Cet article explore les difficultés liées au tri des adresses IPv6 à l'aide d'outils en ligne de commande Unix standard tels que 'sort'. Les complexités proviennent de la représentation hexadécimale d'IPv6, de l'absence de zéros en tête et de la notation abrégée '::'. L'auteur soutient qu'une solution directe nécessite de transformer les adresses IPv6 en leur forme complète et étendue ou d'utiliser un langage de programmation comme Perl ou Python pour un tri efficace, car les utilitaires Unix existants sont mal adaptés pour gérer directement les nuances du formatage des adresses IPv6.

Lire plus
Développement tri ligne de commande Unix

Architecture Monoprocessus : Une Solution Élégante pour le Développement Web Moderne

2025-04-21

Lors de la mise à jour du logiciel de son blog, l'auteur a constaté qu'une architecture monoprocessus était plus simple que son approche basée sur CGI pour gérer les complexités du web moderne. Un seul processus permet un accès facile à l'état partagé, simplifiant des tâches telles que la détection du trafic malveillant, la limitation de vitesse des requêtes et la mise en cache. Bien que l'utilisation de la mémoire et du processeur soient des préoccupations, la facilité de mise en œuvre rend une architecture monoprocessus avantageuse pour traiter diverses formes d'abus, en particulier celles imprévisibles. L'auteur estime qu'avec l'augmentation des abus sur le web, les architectures monoprocessus deviendront de plus en plus importantes.

Lire plus

Paradoxe de compression ZFS : blocs logiques vs. blocs physiques

2025-04-17

Un fichier zéro de 256 Ko créé avec `dd` sur un système de fichiers ZFS avec compression activée présente un comportement étrange : `ls -l` affiche sa taille comme étant de 256 Ko, mais `ls -s` et `ls -slh` affichent une taille beaucoup plus petite, presque nulle. Cela est dû à la compression efficace de ZFS, qui se traduit par un nombre minimal de blocs physiques. L’article explore trois manières de mesurer la taille d’un fichier : la taille logique (en octets), le nombre de blocs physiques et le nombre de blocs logiques. Il souligne que le champ `st_blocks` de POSIX ne précise pas quelle taille doit être rapportée, ce qui peut entraîner des modifications de la valeur de `st_blocks` lors du déplacement de fichiers entre systèmes de fichiers, et même une expansion potentielle de la taille du fichier dépassant la capacité du nouveau système de fichiers.

Lire plus
Développement

Une approche personnelle de la gestion des paquets Unix

2025-04-13

L'auteur partage une méthode astucieuse pour gérer ses paquets logiciels personnels sur les systèmes Unix. Il utilise un arbre de répertoires `~/lib/` pour stocker les logiciels pour différentes architectures, chaque programme étant installé dans un sous-répertoire séparé et versionné (par exemple, `emacs-30.1`). Un répertoire `~/bin/bin.` contient des liens symboliques ou des scripts d'encapsulation pointant vers ces programmes, permettant de basculer facilement entre les versions. Pour les outils comme pipx et Cargo, l'auteur conserve leurs emplacements d'installation par défaut, mais crée des liens dans `~/bin/bin.` pour éviter les conflits de chemin. Cette configuration n'est pas parfaite, mais elle est très utile pour gérer les logiciels indisponibles via le gestionnaire de paquets du système ou trop anciens.

Lire plus
Développement gestion de logiciels

Bug étrange de désactivation du mot de passe SSH sur Ubuntu 24.04

2025-04-06

Désactiver l'accès par mot de passe SSH sur Internet tout en le permettant sur le réseau local sur un serveur Ubuntu 24.04 semblait simple en utilisant sshd_config. Cependant, un fichier de configuration personnalisé dans /etc/ssh/sshd_config.d/ a été ignoré après le redémarrage du démon SSH. Le coupable était la règle de configuration 'premier arrivé, premier servi' de sshd_config, et un fichier '50-cloud-init.conf' généré par le système contenant 'PasswordAuthentication yes', qui a été chargé avant le fichier personnalisé. Renommer le fichier de configuration personnalisé en '10-no-passwords.conf' a résolu le problème en garantissant qu'il soit chargé en premier.

Lire plus
Développement

Surprovisionnement de fibres : mieux vaut prévenir que guérir

2025-03-25

Lors de la planification du câblage en fibre entre les salles ou les bâtiments, soyez prudent et installez plus de fibres que vous n'en avez besoin initialement. Les extensions futures, les mises à niveau de la bande passante et les nouveaux protocoles nécessitent une capacité supplémentaire. De plus, des pannes de fibres se produisent — parfois inexplicablement — et le fait d'avoir des paires de secours permet une récupération rapide. Bien que les fibres monomodes et multimodes aient des applications différentes, il est crucial de disposer d'une redondance suffisante pour minimiser les temps d'arrêt et les coûts.

Lire plus

Métadonnées structurées de Loki : un cauchemar logistique

2025-03-19

Grafana Loki, souvent présenté comme le « Prometheus des logs », a initialement adopté un modèle de données similaire à Prometheus. Cependant, cela s'est avéré désastreux pour les journaux système (syslog ou journal systemd). Contrairement à Prometheus, Loki stocke chaque ensemble de valeurs d'étiquette séparément et ne compacte pas le stockage des journaux, ce qui entraîne des explosions de cardinalité. Pour résoudre ce problème, Loki a introduit les « métadonnées structurées », mais à partir de la version 3.0.0, elles restent sous-développées. Les étiquettes de métadonnées structurées ne sont pas traitées comme des étiquettes Loki régulières, ce qui nécessite une syntaxe de requête différente. La migration des étiquettes existantes est complexe et potentiellement catastrophique, avec le risque de créer involontairement des étiquettes à forte cardinalité. La mise à niveau nécessite de la prudence, la migration des données existantes est incroyablement coûteuse et une réflexion approfondie est essentielle avant de l'utiliser dans de nouveaux projets.

Lire plus

JSON : Un choix pragmatique pour une sortie lisible par machine sous Unix

2025-02-24

L'auteur préconise l'utilisation de JSON comme format de sortie lisible par machine, basé sur son expérience de suppression d'e-mails d'une file d'attente de messagerie Postfix. Bien qu'il ne soit pas parfait, JSON offre plusieurs avantages pratiques sur les systèmes Unix : clarté, large compatibilité, support étendu des outils et conversion facile vers d'autres formats. Pour les nouveaux programmes, l'auteur suggère que l'utilisation de JSON uniquement est l'approche la plus simple, évitant les complexités de la conception de formats personnalisés et favorisant l'interopérabilité entre les programmes Unix.

Lire plus

Caches géantes cachées : pourquoi votre espace disque disparaît-il ?

2025-02-08

De nombreux programmes Unix mettent en cache des données dans des répertoires cachés `.cache` et `.local`, ce qui rend difficile pour les utilisateurs de trouver et de supprimer ces gros fichiers de cache qui consomment beaucoup d'espace disque. L'auteur a constaté de première main comment des étudiants diplômés dans un environnement de serveur de fichiers partagé étaient déconcertés par ces caches cachés, avec des centaines de Go d'espace disque consommés à leur insu. L'article appelle les développeurs à stocker les caches dans des répertoires visibles et suggère que les outils d'utilisation de l'espace disque affichent explicitement le contenu de ces répertoires cachés pour faciliter la gestion de l'espace disque de l'utilisateur.

Lire plus

Attaque d'hameçonnage sophistiquée utilisant l'accès VPN

2025-01-29

Le département d'informatique de l'Université de Toronto a été victime d'une attaque d'hameçonnage très sophistiquée. L'attaquant a usurpé une adresse e-mail du département, réussissant à voler le mot de passe d'un utilisateur. De manière alarmante, l'attaquant a utilisé les identifiants volés pour s'inscrire rapidement à la VPN du département, puis a utilisé la passerelle SMTP interne pour envoyer du spam. Cela démontre une reconnaissance préalable de l'environnement VPN et de messagerie du système cible, soulignant des techniques d'attaque de plus en plus avancées et la nécessité de défenses robustes en matière de cybersécurité.

Lire plus
Technologie exploitation VPN

Désactivation de l'authentification par mot de passe pour SSH accessible sur Internet : renforcement de la sécurité ou excès ?

2025-01-18

Cet article pèse le pour et le contre de la désactivation de l'authentification par mot de passe pour SSH accessible sur Internet. Bien que des mots de passe forts offrent une protection contre les attaques par force brute, l'auteur soutient que la désactivation de l'authentification par mot de passe offre des couches de sécurité supplémentaires contre le vol d'informations d'identification, les vulnérabilités du serveur SSH et les attaques ciblant les comptes par défaut. Cependant, cela introduit également des inconvénients, tels que l'impossibilité de se connecter sans une paire de clés. L'auteur suggère une considération attentive des compromis en fonction des circonstances individuelles.

Lire plus

/etc/glob : L'histoire méconnue du globbing shell dans les premiers Unix

2025-01-13

Cet article explore l'histoire et la fonction de `/etc/glob` dans les premiers systèmes Unix. Avant le shell Bourne V7, l'expansion des caractères génériques (globbing) dans le shell Unix n'était pas gérée par le shell lui-même, mais déléguée au programme externe `/etc/glob`. `/etc/glob` recevait la commande et les arguments, développait les caractères génériques, puis exécutait la commande. L'article détaille le fonctionnement de `/etc/glob` dans différentes versions d'Unix, y compris la gestion des caractères d'échappement et la raison de l'utilisation d'un programme externe, probablement due aux limitations de ressources des systèmes anciens.

Lire plus
Développement Histoire d'Unix

Complexité de la configuration de WireGuard : du simple à l'avancé

2025-01-05

Cet article de blog explore les différentes complexités de la configuration de WireGuard, de la plus simple, avec des espaces d'adresses IP internes complètement isolés, à la configuration de « VPN » la plus difficile, où certains points d'extrémité sont accessibles à la fois à l'intérieur et à l'extérieur du tunnel WireGuard. L'auteur détaille la difficulté et les problèmes potentiels de chaque configuration, tels que les conflits de routage et le routage récursif. L'article souligne l'importance de la planification préalable et suggère d'opter pour des configurations plus simples afin d'éviter un routage complexe lors de la conception d'un environnement WireGuard.

Lire plus
Développement Configuration Réseau

Problème potentiel avec l'importation/exportation de zpool dans Linux OpenZFS

2024-12-26

Un problème potentiel existe dans les versions Linux OpenZFS (à partir de la 2.3.0) concernant l'importation et l'exportation de pools ZFS. Même si aucun système de fichiers dans un pool ZFS n'a la propriété 'sharenfs' définie, `zpool import` et `zpool export` exécutent toujours `exportfs -ra`. Cela peut supprimer les exportations NFS ajoutées ou modifiées manuellement, affectant les environnements tels que les systèmes à haute disponibilité utilisant des configurations d'exportation NFS personnalisées. Le problème provient d'OpenZFS exécutant aveuglément `exportfs -ra`, indépendamment du besoin de modifier les exportations NFS.

Lire plus
Développement

Échec du redémarrage du serveur : un redémarrage après refroidissement résout le blocage du noyau

2024-12-25

L'auteur a rencontré deux serveurs identiques qui présentaient des plantages du noyau et qui ne pouvaient pas être résolus par un simple redémarrage. Pendant le plantage, les serveurs ont imprimé une série d'erreurs d'exception de vérification de la machine au cours de la phase du microprogramme système, indiquant des problèmes matériels de CPU. Une période de refroidissement de quelques minutes après la mise hors tension, suivie d'un redémarrage, a résolu le problème. Cela montre que même une brève interruption de courant peut ne pas réinitialiser complètement certains composants du système x86, nécessitant une période de refroidissement pour une récupération complète.

Lire plus

Une seconde vie pour un serveur de fichiers vieux de dix ans : solution de stockage rentable

2024-12-17

Une entreprise utilise toujours en production une machine, un serveur de fichiers vieux de plus de dix ans. Bien qu'obsolète, avec un BMC nécessitant Java pour KVM-over-IP, ses 16 baies de disques et ses ports Ethernet 10G le rendent idéal pour une réutilisation. Utilisé comme serveur de stockage à faible coût avec disques propres, il répond au besoin de stockage haute capacité et basse performance malgré son âge et sa RAM limitée. Cela souligne la valeur de la réutilisation de matériel ancien lorsque les exigences sont alignées.

Lire plus
← Previous 1