Vue normale
Corriger l’erreur « SYSTEM SERVICE EXCEPTION » (BSOD) sur Windows
IBM Warns of Critical API Connect Bug Allowing Remote Authentication Bypass

Researchers Spot Modified Shai-Hulud Worm Testing Payload on npm Registry

-
Cyberguerre
- Accusé de collecter illégalement des données d’enfants sur YouTube, Disney s’en sort avec une amende de 10 millions de dollars
Accusé de collecter illégalement des données d’enfants sur YouTube, Disney s’en sort avec une amende de 10 millions de dollars
![]()
Disney a accepté de payer une amende de 10 millions de dollars pour régler des accusations selon lesquelles le groupe aurait illégalement collecté des données personnelles d’enfants via des vidéos diffusées sur YouTube, en violation de la loi américaine sur la protection de la vie privée des enfants en ligne (COPPA).
-
Cyberguerre
- « Nous les appelons DarkSpectre » : ces outils de productivité ont espionné en silence des millions de réunions d’entreprises
« Nous les appelons DarkSpectre » : ces outils de productivité ont espionné en silence des millions de réunions d’entreprises
![]()
Le 30 décembre 2025, les chercheurs de Koi Security ont publié les conclusions de leur dernière enquête sur l’acteur cybercriminel DarkSpectre. Identifié depuis plusieurs années, cet acteur chinois aurait récemment disséminé des extensions de navigateur visant à collecter des renseignements d’entreprise, en extrayant notamment des informations issues de réunions Zoom et Google Meet.
[Linux] Vous utilisez « man » et pas « tldr » ? 📖
Adrien nous propose une vidéo sur la commande "tldr" (en français : trop long, pas lu) en complément de "man" :
J'ai toujours préféré les exemples à de longues documentations, certes essentielles pour décrire les options, mais rarement digestes pour les humains. La commande "man" reste utile si "tldr" ne vous offre pas les options les plus avancées... "tldr" séduira particulièrement aux débutants un peu frileux de la ligne de commande.
Et pour tout le reste, il y a les IA... à utiliser avec modération vu le prix de la RAM en ce moment ![]()
Merci Adrien !
Vous n'aimez pas le RSS : abonnez-vous par emailVous devriez me suivre sur Twitter : @xhark
Article original écrit par Mr Xhark publié sur Blogmotion le 31/12/2025 |
Pas de commentaire |
Attention : l'intégralité de ce billet est protégée par la licence Creative Commons
HiFidelity - Le lecteur audio macOS pour ceux qui en ont marre de Spotify
J'arrête pas de lire en ce moment des articles sur des Américains de moins de 25 ans qui découvrent les cassettes audio et qui nous en font des tartines en mode "c'est trop génial". Ils sont mignons car biberonnés à Stranger Things, ils deviennent nostalgiques de cette époque des années 80 qu'il n'ont pas connu. Je comprends, c’était cool mais moi j'ai connu et je peux vous dire que la cassette audio, ça vaut pas un bon vieux FLAC en termes de qualité audio.
Après Spotify même s'il propose du lossless depuis peu, c'est pas non plus le top parce que bah faut payer l'abonnement et puis la musique ne nous appartient pas vraiment. Alors peut-être que, finalement, la voie de la sagesse, c'est celle qui consiste à se faire une collection de FLAC comme on le faisait à l'époque avec nos vieux MP3.
Et c'est pour ça qu'aujourd'hui je vous parle de HiFidelity qui va probablement vous faire plaisir.
C'est un lecteur audio pour macOS, totalement gratuit et open source, pensé pour les audiophiles qui en ont marre des usines à gaz bardées de trackers et d'abonnements. Le truc fonctionne 100% hors ligne, ne collecte aucune donnée, et utilise la bibliothèque BASS (celle qu'on retrouve dans plein de players pro) pour une lecture bit-perfect. Ça veut dire que vos fichiers audio sont lus tels quels, sans conversion ni dégradation.
Côté formats, c'est la totale : FLAC, WAV, AIFF, APE, MP3, AAC, OGG, OPUS, M4A... bref tout ce qui traîne dans une bibliothèque musicale bien fournie. Et pour les puristes, y'a même un mode "Hog" qui prend le contrôle exclusif de votre périphérique audio. En gros aucune autre app ne viendra polluer votre écoute avec ses petits bips de notifications.
L'interface est propre, avec navigation par artistes, albums, genres, et une recherche super réactive grâce à SQLite FTS5 , recommandations automatiques... Ah et le mini-player flottant est vraiment bien foutu pour bosser avec sa musique sans encombrer l'écran.
Perso, ce qui me plaît, c'est l'approche "local first" et avoir un lecteur qui fait juste... lire de la musique, ça fait du bien. Y'a même la synchro des paroles en temps réel via lrclib et un égaliseur multiband pour ceux qui aiment tripatouiller les fréquences.
Pour l'installer c'est simple... soit via Homebrew avec
brew tap rvarunrathod/tap && brew install --cask hifidelity
Soit en téléchargeant directement depuis GitHub . Faut macOS 14 minimum par contre.
Bref, si vous cherchez un lecteur audio qui respecte vos oreilles ET votre vie privée, HiFidelity mérite clairement le coup d'oeil. Merci à Lorenper pour la découverte !

-
Numerama
- Accusé de collecter illégalement des données d’enfants sur YouTube, Disney s’en sort avec une amende de 10 millions de dollars
Accusé de collecter illégalement des données d’enfants sur YouTube, Disney s’en sort avec une amende de 10 millions de dollars
![]()
Disney a accepté de payer une amende de 10 millions de dollars pour régler des accusations selon lesquelles le groupe aurait illégalement collecté des données personnelles d’enfants via des vidéos diffusées sur YouTube, en violation de la loi américaine sur la protection de la vie privée des enfants en ligne (COPPA).
Elon Musk a encore fait en 2025 des promesses impossibles à tenir pour Tesla
![]()
Comme chaque année, Elon Musk a encore beaucoup promis aux fans, actionnaires et investisseurs de Tesla pour 2025. Mais entre ambitions affichées et réalité industrielle, il y a souvent comme une faille spatio-temporelle.
C’est un bon signe pour Netflix : Warner Bros rejette encore les avances de Paramount
![]()
Le conseil d'administration de Warner Bros. s’apprêterait à rejeter une nouvelle fois l’offre publique d’achat hostile présentée la semaine dernière par Paramount, rapporte Bloomberg. Un vote doit avoir lieu la semaine prochaine.
-
Numerama
- « Nous les appelons DarkSpectre » : ces outils de productivité ont espionné en silence des millions de réunions d’entreprises
« Nous les appelons DarkSpectre » : ces outils de productivité ont espionné en silence des millions de réunions d’entreprises
![]()
Le 30 décembre 2025, les chercheurs de Koi Security ont publié les conclusions de leur dernière enquête sur l’acteur cybercriminel DarkSpectre. Identifié depuis plusieurs années, cet acteur chinois aurait récemment disséminé des extensions de navigateur visant à collecter des renseignements d’entreprise, en extrayant notamment des informations issues de réunions Zoom et Google Meet.
Comment j'ai viré Algolia et recréé le Google de 1998 sur mon site
Bon, faut qu'on parle un peu du moteur de recherche de mon site. Ceux qui l'ont déjà utilisé savent de quoi je parle : c'était pas terrible. Enfin, « pas terrible » j'suis gentil. C'est un espèce d'overlay avec des résultats certes fiables mais c'était vraiment pas pratique.
Et en plus de ça, comme j'ai un site statique généré avec Hugo, je passais par Algolia pour la recherche. Si vous ne connaissez pas, Algolia c'est un service cloud qui indexe votre contenu et vous fournit une API de recherche ultra-rapide. Sur le papier c'est génial et dans la pratique aussi d'ailleurs sauf que voilà, ça coûte des sous. Et mon site rencontre un franc succès ces derniers temps (merci à vous !), donc j'ai de plus en plus de visiteurs, donc de plus en plus de recherches, donc une facture Algolia qui grimpe gentiment chaque mois.
Du coup je me suis dit : « Et si je trouvais une solution de recherche pour sites statiques ? » Parce que oui, ça existe et c'est comme ça que j'ai découvert Pagefind.
Pagefind c'est donc un moteur de recherche statique open source développé par CloudCannon qui fonctionne comme ceci : Au moment du build de votre site, Pagefind parcourt tout votre HTML généré et crée un index de recherche qu'on peut interroger avec un peu de JS. Y'a donc plus d'API, et tout se fait localement sur le navigateur des internautes.
Bref, ça avait l'air très cool alors évidemment, je me suis lancé dans l'aventure et comme j'aime bien me compliquer la vie, j'ai décidé de pas juste intégrer Pagefind tel quel. Non non. J'ai voulu recréer l'interface du Google de 1998 parce que à quoi bon avoir son propre site web si on peut pas s'amuser un peu ^^.
Laissez-moi donc vous raconter cette aventure.
Le problème avec Algolia
Leur service est excellent, je dis pas le contraire, la recherche est rapide, les résultats sont pertinents, l'API est bien foutue mais voilà, y'a le modèle de pricing puisque Algolia facture au nombre de requêtes de recherche.
Plus les gens cherchent sur votre site, plus vous payez et quand vous avez un site qui fait plusieurs millions de pages vues par mois, bah... ça chiffre vite. En gros je dépasse très vite les 10 000 recherches offertes chaque semaine et ensuite ça chiffre. C'est pas la mort, mais c'est un coût récurrent débile pour un truc qui pourrait être gratuit.
En plus de ça, y'a la dépendance à un service externe. Si Algolia tombe, ma recherche tombe. Et si Algolia change ses prix, je vais devoir subir. Même chose si Algolia décide de modifier son API... il faudra que j'adapte mon code. Bref, c'est le cloud dans toute sa splendeur... C'est pratique mais on n'est jamais vraiment chez nous.
Pagefind à la rescousse
Pagefind résout donc tous ces problèmes d'un coup. C'est un outil en ligne de commande qui s'exécute après votre générateur de site statique (Hugo dans mon cas, mais ça marche avec Jekyll, Eleventy, Astro, ou n'importe quoi d'autre).
Concrètement, vous lancez :
npx pagefind --site public
Et Pagefind va :
-
- Scanner tous vos fichiers HTML dans le dossier
public/
- Scanner tous vos fichiers HTML dans le dossier
-
- Extraire le contenu textuel (en ignorant la nav, le footer, les pubs si vous lui dites)
-
- Créer un index de recherche optimisé
-
- Générer des fichiers JavaScript pour interroger cet index côté client
Et le résultat c'est un dossier pagefind/ qui contient tout ce qu'il faut. Ensuite; à vous de servir ces fichiers statiquement avec le reste de votre site, et la magie pourra opérer !
L'index pour mes 18 000 articles fait environ 1,5 Go. Ça peut paraître beaucoup, mais Pagefind est malin car il découpe l'index en fragments et ne charge que ce qui est nécessaire pour la recherche en cours. Du coup en pratique, une recherche typique télécharge quelques centaines de Ko, et pas plus.
L'intégration technique
Pour intégrer Pagefind dans mon workflow Hugo, j'ai donc été cherché le binaire, je l'ai mis sur mon serveur et je l'ai appelé dans un cron comme ça, je rafraichi l'index de recherche 1 fois par jour (et pas à chaque génération du site).
0 4 * * * /home/manu/pagefind/pagefind --site /home/manu/public_html --output-path /home/manu/public_html/pagefind >> /var/log/pagefind.log 2>&1
J'ai aussi créé un fichier de configuration pagefind.yml pour affiner le comportement :
root_selector: "[data-pagefind-body]"
exclude_selectors:
- "header"
- ".site-header"
- "footer"
- ".sidebar"
L'astuce ici c'est d'indexer uniquement les div ayant la class data-pagefind-body='true' et d'exclure les éléments qui ne font pas partie du contenu éditorial afin de ne pas indexer ce qui se trouve dans le header, les natives, le footer...etc.
Côté JavaScript, Pagefind utilise les imports ES6 dynamiques. Ça veut dire que le moteur de recherche n'est chargé que quand l'utilisateur lance effectivement une recherche :
async function initPagefind() {
pagefind = await import('/pagefind/pagefind.js');
await pagefind.init();
}
Et pour faire une recherche :
const search = await pagefind.search("linux");
// search.results contient les IDs des résultats
// On charge le contenu de chaque résultat à la demande
for (const result of search.results) {
const data = await result.data();
console.log(data.url, data.meta.title, data.excerpt);
}
C'est bien fichu parce que search.results retourne immédiatement les références des résultats, mais le contenu réel (titre, extrait, URL) n'est chargé que quand vous appelez result.data(). Du coup vous pouvez implémenter une pagination propre sans télécharger les données de milliers de résultats d'un coup.
Le délire rétro - Recréer Google 1998
Maintenant que j'avais un moteur de recherche fonctionnel, fallait l'habiller. Et c'est là que j'ai eu cette idée un peu débile : Pourquoi pas recréer l'interface du Google de 1998 ?
Pour les plus jeunes qui lisent ça, Google en 1998 c'était une page blanche avec un logo, un champ de recherche, et deux boutons : « Google Search » et « I'm Feeling Lucky« . Pas de suggestions, pas de carrousels, pas de pubs... Juste un champs de recherche. C'était la belle époque !
J'ai donc créé une page de recherche avec deux vues distinctes. La page d'accueil avec le logo centré et le champ de recherche au milieu, exactement comme le Google originel.
Et la page de résultats avec le logo en petit en haut à gauche et les résultats en dessous.
Pour le code CSS, j'ai voulu être fidèle à l'époque. Times New Roman comme police par défaut, les liens en bleu souligné qui deviennent violet une fois visités. Et surtout, les boutons avec l'effet 3D des interfaces Windows 95 :
.search-button:active { border-style: inset; }
Ce border: outset et border-style: inset au clic, c'est exactement ce qui donnait cet effet de bouton en relief qu'on avait partout dans les années 90. Pour moi, ça fait toute la différence pour l'authenticité. Même le logo, je l'ai volontairement « dégradé » pour qu'il soit de la même qualité que le logo Google d'origine.
La pagination « Koooooorben »
Vous vous souvenez de la pagination de Google avec « Goooooogle » en bas de page ? Le nombre de « o » correspondait au nombre de pages de résultats. J'ai fait pareil, mais avec « Koooooorben ».
let logo = 'K'; for (let i = 0; i < oCount; i++)
{
logo += o;
} logo += 'rben'; }
Plus il y a de résultats, plus il y a de « o ». C'est complètement inutile mais ça me fait marrer à chaque fois que je le vois.
Le bouton « J'ai de la chance »
Ah, le fameux « I'm Feeling Lucky » de Google, j'ai voulu l'implémenter comme à l'époque ! Si vous tapez une recherche et cliquez sur « J'ai de la chance », vous êtes envoyé sur le premier résultat. Classique. Mais si vous cliquez sur le bouton avec le champ vide sur la home de la recherche, vous êtes envoyé sur un article aléatoire parmi les +18 000 du site.
Pour ça, j'ai utilisé une astuce : le sitemap. Mon Hugo génère un fichier sitemap.xml qui contient toutes les URLs du site et je peux aller piocher dedans en JS :
const articles = [...xml.querySelectorAll('loc')] .map(loc => loc.textContent) .filter(url => {
// Exclure les pages qui ne sont pas des articles
const path = new URL(url).pathname;
return !path.startsWith('/categories/') && !path.startsWith('/page/') && path !== '/';
});
const randomUrl = articles[Math.floor(Math.random() * articles.length)];
window.location.href = randomUrl;
} }
Un seul fetch, un peu de parsing XML natif, et hop c'est le grand retour de la fonctionnalité « article aléatoire » qui vous manquait, je le sais !
Tri et nombre de résultats
Je vous ai aussi mis une listbox qui vous permet d'afficher 10, 25 ou 50 résultats ainsi qu'un tri par pertinence ou data. Et ça aussi Pagefind sait parfaitement le navigateur.
Mode sombre et accessibilité
Même si l'interface est rétro, j'ai quand même ajouté quelques fonctionnalités modernes. Le mode sombre respecte les préférences système, et j'ai intégré la police OpenDyslexic pour les personnes dyslexiques.
Le truc important c'est de charger ces préférences avant le rendu de la page pour éviter le fameux flash. J'ai donc un petit script qui lit les préférences dans le localStorage et applique les classes CSS immédiatement :
function() {
if (localStorage.getItem('theme') === 'dark') {
document.documentElement.classList.add('dark-mode');
}
if (localStorage.getItem('dyslexic-font') === 'true') {
document.documentElement.classList.add('dyslexic-mode');
}
});
Gestion de l'historique navigateur
Un détail qui peut sembler anodin mais qui est super important pour l'expérience utilisateur c'est la gestion du bouton retour du navigateur.
Quand vous faites une recherche, l'URL change selon votre requête du genre /recherche/?q=linux&p=2. Du coup si vous partagez cette URL à un collègue, la personne arrivera directement sur les résultats de recherche. Et si vous utilisez le bouton retour, vous reviendrez alors à la recherche précédente.
window.addEventListener('popstate', () => {
const query = new URLSearchParams(location.search).get('q');
if (query) doSearch(query);
else showHomePage();
});
Liens vers d'autres moteurs
Et si vous ne trouvez pas votre bonheur dans mes +18 000 articles (ce qui serait quand même étonnant ^^), j'ai ajouté des liens pour relancer la même recherche sur Google, DuckDuckGo, Qwant, Brave et Ecosia. Bref, un petit service bonus pour mes visiteurs, exactement comme le proposait Google à l'époque.
Le bilan - Algolia vs Pagefind
Après 1 semaine d'utilisation, voici donc mon verdict ! Côté portefeuille d'abord, Algolia me coûtait entre 60 et +100 euros par mois et maintenant pour Pagefind, c'est zéro euros ! Et les performances sont également au rendez-vous. Algolia c'était rapide et bien là, ça l'est encore plus. Seul compromis à noter, l'index Algolia se mettait à jour en temps réel, alors que Pagefind nécessite une reconstruction au moment du build.
La conclusion
Voilà, j'ai maintenant une recherche qui marche vraiment bien, qui me coûte 0€ par mois, et qui a un look rétro qui va en surprendre plus d'un...
Alors est-ce que c'était nécessaire de passer autant de temps sur le design rétro ? Hé bien absolument pas. Mais est-ce que ça valait le coup ?
Franchement, oui !! C'est mon site, je fais ce que je veux, et si ça peut faire sourire quelques visiteurs nostalgiques des débuts du web, c'est du bonus. D'ailleurs un grand merci aux Patreons qui me soutiennent car sans eux, je n'aurais pas pu passer mon dimanche là dessus ^^
Et puis surtout, ça m'a permis de découvrir Pagefind qui est vraiment un excellent outil. Donc si vous avez un site statique (ou n'importe quel type de contenu textuel) et que vous cherchez une solution de recherche gratuite et performante, je vous le recommande chaudement. La documentation est claire, l'intégration est simple, et le résultat est top !
Allez, maintenant vous pouvez aller tester la nouvelle recherche sur le site . Et si vous cliquez sur « J'ai de la chance » sans rien taper... bonne découverte !

Quand je pense que Win32 est devenu la couche de compatibilité la plus stable sur Linux...
Vous avez déjà essayé de faire tourner un vieux logiciel Linux sur une distrib récente, du genre un truc compilé il y a 5 ans ? Bah bon courage, parce que y'a de grandes chances que ça plante lamentablement à cause d'une dépendance qui aura changé entre-temps.
Maintenant, prenez un .exe Windows de 1998, genre un vieux jeu ou une appli Win32 classique. Lancez-le sous Wine et là, ô surprise... y'a de bonnes chances que ça tourne ! Bon, ça dépend des applis évidemment, mais le taux de réussite est souvent meilleur qu'avec les vieux binaires Linux...
C'est précisément ce paradoxe que pointe le projet loss32 , une distro Linux expérimentale dont l'idée complètement dingue serait de faire tourner TOUT l'environnement de bureau en Win32 via Wine. Leur slogan c'est "Win32 is the stable Linux ABI!" ce qui veut dire en gros que l'interface binaire la plus fiable pour faire tourner des applications sur Linux à long terme, c'est celle de Windows. Ahaha, je suis mort de rire en écrivant ça car j'imagine votre tête énervée de barbu ! Pourtant, vous allez voir, c'est difficile de leur donner tort...
Alors c'est quoi le problème avec Linux exactement ?
Hé bien en août 2022, un changement dans la toolchain a fait des dégâts. Beaucoup de distributions ont basculé vers l'option --hash-style=gnu au lieu de --hash-style=both, ce qui génère des binaires sans la section DT_HASH classique. L'idée c'était de gagner quelques kilobytes par binaire avec DT_GNU_HASH, qui est plus moderne et plus performant.
Ça n'a l'air de rien comme ça... sauf que ça a cassé pas mal de trucs. Des jeux utilisant Easy Anti-Cheat d'Epic se sont retrouvés en vrac, par exemple Shovel Knight a eu des soucis, ou encore le limiteur de framerate libstrangle . Bref, des logiciels qui marchaient très bien la veille se sont retrouvés dans les choux du jour au lendemain.
Et c'est là qu'on touche au cœur du problème car sous Windows, Microsoft maintient une compatibilité binaire quasi-religieuse pour les applis Win32 classiques. Un programme compilé pour Windows 95, s'il n'utilise pas de drivers ou d'APIs obsolètes, a de bonnes chances de tourner sur Windows 11. C'est un contrat tacite entre Microsoft et les développeurs qui a tenu pendant trois décennies.
Et même si sous Linux, le kernel et glibc sont plutôt stables, c'est vrai, dès qu'on parle de binaires tiers liés à des bibliothèques user, c'est une autre histoire. Et comme c'est le bordel et que chaque distribution fait un peu ce qu'elle veut, et les dépendances évoluen forcement. Du coup, si votre binaire précompilé casse, c'est votre problème. La philosophie c'est donc plutôt "recompile ton truc et arrête de te chialer 'spèce de fragile".
Et c'est pour ça que Valve a misé gros sur Proton. Officiellement, ils n'ont pas de préférence entre ports natifs et Windows via Proton, mais dans les faits, Proton fonctionne tellement bien que pas mal de studios ne se cassent plus la tête à faire des ports Linux natifs. Et parfois, les jeux Windows via Proton tournent même mieux que les ports natifs ... c'est dire.
Et le projet loss32 pousse cette logique jusqu'au bout car pourquoi se battre contre les moulins à vent de la fragmentation Linux quand on peut simplement tout faire tourner en Win32 ?
Alors perso, j'ai hâte de voir ça et visiblement un PoC devrait sortir en janvier 2026 avec un paquet APT pour qu'on puisse tous tester ça chez nous. Et si ça fonctionne bien, ça veut dire que si vous créez une application desktop simple et que vous voulez qu'elle tourne sur Linux encore dans 10 ans, cibler Win32 et distribuer un .exe via Wine/Proton est une option à considérer sérieusement.
Ça semble contre-intuitif, mais pour certains cas d'usage, c'est une stratégie pragmatique...
Pour les utilisateurs, ça veut dire aussi que Wine et Proton ne sont pas des rustines en attendant mieux mais des des solutions de première classe pour faire tourner des logiciels de manière stable sur Linux. Le Steam Deck l'a prouvé avec des milliers de jeux Windows qui tournent nickel.
Bref, on en est là... Win32, l'API de Microsoft, est devenue paradoxalement une des couches de compatibilité les plus stables pour faire tourner des logiciels sur Linux. C'est fou non ? Ça va faire grincer des dents de barbus c'est sûr mais c'est aussi la preuve que parfois, les solutions terre à terre l'emportent sur l'idéologie.

Stadia va encore mourir : c’est le dernier jour pour sauver sa manette Google
![]()
Les détenteurs d’une manette Stadia ont jusqu’au 31 décembre 2025 pour la transformer en manette Bluetooth. Passé cette date, elle ne pourra plus être utilisée qu’en mode filaire -- une solution nettement moins pratique.
-
Numerama
- Stranger Things : vous avez peur que Steve meure dans le final de la saison 5 ? Les créateurs répondent
Stranger Things : vous avez peur que Steve meure dans le final de la saison 5 ? Les créateurs répondent
![]()
Alors que l'ultime épisode de Stranger Things sera dévoilé le 1er janvier 2026, sur Netflix, les fans s'inquiètent évidemment pour le sort de leurs personnages préférés. Parmi eux, un nom revient très souvent : celui de Steve. Le beau gosse d'Hawkins va-t-il survivre à cette toute dernière aventure ? Les créateurs de la série ont donné leur réponse.
-
Numerama
- Trains Eurostar bloqués juste avant le réveillon du 31 décembre : que se passe-t-il exactement ?
Trains Eurostar bloqués juste avant le réveillon du 31 décembre : que se passe-t-il exactement ?
![]()
Les passagers de l'Eurostar doivent prendre leur mal en patience depuis ce 30 décembre 2025. La circulation des trains dans le tunnel sous la Manche est perturbée par un double incident technique, juste avant les festivités du réveillon. Voici ce qu'il s'est passé.
Gérer les permissions NTFS avec PowerShell sur Windows 11/10
Sous Windows 11/10, les fichiers et dossiers stockés sur un disque NTFS possèdent des autorisations (ACL) qui définissent précisément quels utilisateurs peuvent lire, modifier ou supprimer leur contenu.
Si ces permissions peuvent être configurées via l’interface graphique, PowerShell permet d’aller beaucoup plus loin :
afficher, modifier et automatiser la gestion des droits d’accès à grande échelle.
Grâce aux cmdlets Get-Acl et Set-Acl, vous pouvez :
- afficher les permissions d’un dossier ou d’un fichier,
- ajouter ou retirer des autorisations,
- appliquer les mêmes règles à plusieurs répertoires,
- et même changer le propriétaire d’un dossier bloqué.
Cette approche est particulièrement utile pour les administrateurs ou utilisateurs avancés souhaitant :
- automatiser la gestion des droits sur un serveur ou un poste multi-utilisateurs,
- corriger des problèmes d’accès (“Accès refusé”) sans interface graphique,
- ou déployer des permissions identiques sur plusieurs répertoires partagés.
Gérer les permissions avec PowerShell
Lister les permissions NTFS (Get-Acl)
Pour afficher la liste complète des autorisations appliquées à un dossier ou fichier :
Get-Acl "C:\Dossier"
Cette commande affiche les ACL (Access Control List) associées à l’élément.
Pour un affichage plus lisible :
Get-Acl "C:\Dossier" | Format-List
Exemple de sortie :
Path : Microsoft.PowerShell.Core\FileSystem::C:\Users\maill
Owner : NT-AUTORITÄT\SYSTEM
Group : NT-AUTORITÄT\SYSTEM
Access : NT-AUTORITÄT\SYSTEM Allow FullControl
VORDEFINIERT\Administratoren Allow FullControl
hp-MAC\maill Allow FullControl
S-1-15-3-65536-599108337-2355189375-1353122160-3480128286-3345335107-485756383-4087318168-230526575 Allow
ExecuteFile, Synchronize
Audit :
Sddl : O:SYG:SYD:P(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;FA;;;S-1-5-21-2373467495-3460344319-1749951908-1001)(A;;0x1
00020;;;S-1-15-3-65536-599108337-2355189375-1353122160-3480128286-3345335107-485756383-4087318168-230526575)

Ajouter une autorisation (AddAccessRule)
Pour accorder une permission spécifique à un utilisateur ou groupe, utilisez Set-Acl avec une nouvelle règle d’accès.
Exemple : donner le Contrôle total à l’utilisateur Paul sur le dossier C:\Partage
$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","FullControl","Allow")
$acl.AddAccessRule($rule)
Set-Acl "C:\Partage" $acl
Explications :
- Get-Acl → récupère les permissions existantes.
- New-Object …FileSystemAccessRule → crée une nouvelle règle d’accès.
- AddAccessRule → ajoute la règle à la liste.
- Set-Acl → applique la nouvelle configuration.
Vous pouvez remplacer "FullControl" par : "Read", "Write", "Modify", "ReadAndExecute" selon les besoins.
Supprimer une autorisation (RemoveAccessRule)
Pour supprimer une règle d’accès existante :
$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","FullControl","Allow")
$acl.RemoveAccessRule($rule)
Set-Acl "C:\Partage" $acl
La suppression nécessite d’utiliser exactement les mêmes paramètres que la règle initiale (même utilisateur, droit et type “Allow” ou “Deny”).
Modifier les permissions d’un dossier et de ses sous-dossiers (Set-Acl)
Pour appliquer les nouvelles autorisations à tous les sous-dossiers et fichiers :
$acl = Get-Acl "C:\Partage"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","Modify","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
Get-ChildItem "C:\Partage" -Recurse | Set-Acl -AclObject $acl
Explications :
Get-ChildItem -Recurse→ parcourt récursivement toute l’arborescence.ContainerInherit,ObjectInherit→ applique la règle aux sous-dossiers et fichiers.
Utilisez-la avec prudence sur un volume contenant beaucoup de fichiers.
Supprimer toutes les autorisations personnalisées (réinitialiser les ACL)
Pour revenir à la configuration par défaut (héritée du dossier parent) :
icacls "C:\Partage" /reset /T
Cette commande supprime toutes les règles explicites et rétablit les permissions héritées.
Elle est utile pour corriger des erreurs “Accès refusé” ou des droits corrompus.
Changer le propriétaire d’un dossier (SetOwner)
Pour appliquer le changement de propriétaire à tout un dossier et ses sous-dossiers :
$path = "C:\Dossier"
$owner = [System.Security.Principal.NTAccount]"Administrateurs"
Get-ChildItem -Path $path -Recurse -Force | ForEach-Object {
$acl = Get-Acl $_.FullName
$acl.SetOwner($owner)
Set-Acl $_.FullName $acl
}
Cette commande parcourt récursivement tous les fichiers et sous-dossiers.
Elle peut être longue sur un volume contenant de nombreux éléments.
Pour le guide complet sur le changement de propriétaire via l’interface graphique ou la ligne de commande :
Changer le propriétaire d’un dossier sous Windows 11/10
Vérifier le propriétaire actuel
Pour afficher le propriétaire d’un dossier ou fichier :
(Get-Acl "C:\Dossier").Owner
→ Renvoie le nom du compte ou groupe actuellement propriétaire du dossier.
Exemple de script complet : accorder des droits en masse
$users = @("Paul", "Jean", "ServiceRH")
$path = "C:\Dossiers\RH"
foreach ($user in $users) {
$acl = Get-Acl $path
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($user,"Modify","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($rule)
Set-Acl $path $acl
}
Ce script attribue automatiquement les permissions “Modifier” à plusieurs utilisateurs pour un même dossier.
Tableau récapitulatif des cmdlets PowerShell pour gérer les permissions NTFS
| Cmdlet / Commande | Fonction principale | Syntaxe de base | Exemple d’utilisation |
|---|---|---|---|
| Get-Acl | Affiche la liste des autorisations (ACL) appliquées à un fichier ou dossier. | Get-Acl "C:\Dossier" | Affiche les permissions et le propriétaire du dossier. |
| Set-Acl | Applique ou met à jour des autorisations sur un fichier ou dossier. | Set-Acl "C:\Dossier" $acl | Met à jour les ACL selon les règles définies dans $acl. |
| New-Object System.Security.AccessControl.FileSystemAccessRule | Crée une nouvelle règle d’autorisation NTFS (utilisateur, droit, type). | $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Paul","Modify","Allow") | Crée une règle donnant à Paul le droit de modifier le dossier. |
| AddAccessRule() | Ajoute une nouvelle autorisation à une ACL existante. | $acl.AddAccessRule($rule) | Ajoute la règle $rule aux ACL existantes du dossier. |
| RemoveAccessRule() | Supprime une autorisation spécifique. | $acl.RemoveAccessRule($rule) | Supprime la règle $rule précédemment définie. |
| SetOwner() | Définit un nouveau propriétaire sur un dossier ou fichier. | $acl.SetOwner([System.Security.Principal.NTAccount]"Administrateurs") | Change le propriétaire pour le groupe Administrateurs. |
| Get-ChildItem -Recurse + Set-Acl | Applique des permissions à tous les sous-dossiers et fichiers. | `Get-ChildItem « C:\Dossier » -Recurse | Set-Acl -AclObject $acl` |
| **Get-Acl | Format-List** | Affiche les ACL dans un format lisible. | `Get-Acl « C:\Dossier » |
| icacls (CMD) (complément) | Réinitialise ou sauvegarde les ACL en ligne de commande. | icacls "C:\Dossier" /reset /T | Réinitialise toutes les permissions NTFS du dossier. |
| takeown (CMD) (complément) | Reprend la propriété d’un dossier ou fichier. | takeown /f "C:\Dossier" /r /d y | Attribue la propriété au compte administrateur courant. |
Notes importantes
- Les cmdlets PowerShell (
Get-Acl,Set-Acl, etc.) sont plus flexibles et scriptables que les commandes classiques (icacls,takeown). - Pour toute commande modifiant les ACL, il est recommandé d’exécuter PowerShell en tant qu’administrateur.
- Avant de modifier massivement des droits, vous pouvez sauvegarder les ACL avec :
icacls "C:\Dossier" /save C:\backup_acl.txt /T
Set-Acl.Une erreur dans la variable
$acl ou dans les permissions héritées peut supprimer des droits critiques.
Bonnes pratiques et précautions
- Ne jamais appliquer un script sans sauvegarder les ACL :
icacls "C:\Dossier" /save C:\Backup_ACL.txt /T - Utiliser la commande
Test-Pathpour vérifier les chemins avant exécution. - Toujours tester sur un dossier isolé avant d’appliquer sur un volume complet.
- Exécuter PowerShell en mode Administrateur.
Pensez à sauvegarder vos permissions avant toute modification en masse.
Ressources utiles et articles liés
- Le protocole SMB (Server Message Block) : fonctionnement et versions
- NetBIOS dans Windows (NetBT)
- Kerberos VS NT LAN Manager (NTLM)
- Comment activer/désactiver NetBIOS dans Windows 10/11
- Activer ou désactiver SMB sur Windows
- Comment partager ses fichiers et dossier en réseau entre deux PC sur Windows 11/10
- Comment lister et trouver un dossier partagé sur Windows 10/11
- Comment accéder à un dossier partagé sur Windows 11/10
- Partage de proximité de Windows 11, 10 : partager et transférer des fichiers entre PC
- Optimiser le partage et transfert de fichiers sur réseau Windows (SMB)
- Accéder aux fichiers Windows depuis Ubuntu
- Partager la connexion internet sur Windows 10
- Les autorisations NTFS (ACL) sur les fichiers et partage réseau de Windows
- Résoudre les problèmes et erreurs de partages de fichiers sur Windows
- Comment utiliser smbclient avec des exemples
- Monter un partage Windows sous Linux avec Samba
L’article Gérer les permissions NTFS avec PowerShell sur Windows 11/10 est apparu en premier sur malekal.com.