Sleezr
Télécharger
EACCES: permission denied sur /etc/hosts : comment corriger

EACCES: permission denied sur /etc/hosts : comment corriger

É
Équipe Sleezr
··4 min de lecture

Corrigez l’erreur EACCES permission denied sur /etc/hosts en Node.js, bash et sous Windows. Droits root, sudoers, scripts CLI et solutions sécurisées.

L'erreur EACCES: permission denied sur /etc/hosts survient lorsqu'un script Node.js, un outil CLI ou une commande shell tente d'écrire dans le fichier hosts sans détenir les droits d'administration root. Ce fichier système essentiel est verrouillé par défaut pour empêcher toute altération non contrôlée de la résolution réseau.

Comment corriger l'erreur EACCES: permission denied sur /etc/hosts

Pour corriger l'erreur EACCES: permission denied sur /etc/hosts, exécutez votre commande avec `sudo`, utilisez la syntaxe `echo "127.0.0.1 monapp.test" | sudo tee -a /etc/hosts` pour les redirections shell, ou intégrez un module d'élévation de privilèges (comme sudo-prompt) dans vos scripts Node.js.

Comprendre la structure des permissions de /etc/hosts

Sur macOS et Linux, vérifiez les droits actuels du fichier hosts :

BASH
ls -la /etc/hosts

Le terminal affiche généralement :

TEXT
-rw-r--r--  1 root  wheel  213 Aug 17 10:00 /etc/hosts

L'analyse des permissions :

  • Propriétaire (root) : Droits de lecture et écriture (rw-).
  • Groupe (wheel ou root) : Droit de lecture seule (r--).
  • Tous les autres utilisateurs : Droit de lecture seule (r--).

Lorsque votre application Node.js exécute fs.writeFileSync('/etc/hosts', contenu), le noyau bloque l'appel système et renvoie l'erreur POSIX EACCES (code d'erreur 13).

Lisez également notre guide dédié aux permissions refusées sur Mac.

Les 4 méthodes pour résoudre l'erreur

Méthode 1 : L'erreur classique de la redirection shell

Si vous tentez d'ajouter une ligne via cette commande dans le terminal :

BASH
# Ne fonctionne pas :
sudo echo "127.0.0.1 api.local.test" >> /etc/hosts

Le terminal affiche quand même permission denied. La raison : sudo élève uniquement la commande echo, mais l'opérateur de redirection >> est exécuté par votre shell utilisateur actuel non privilégié.

La syntaxe correcte :

BASH
echo "127.0.0.1 api.local.test" | sudo tee -a /etc/hosts > /dev/null

L'utilitaire tee s'exécute avec les droits sudo et écrit directement dans le fichier avec l'option -a (append).

Méthode 2 : Lancer un script Node.js ou un outil de build avec sudo

Pour un script de déploiement local ou d'automatisation :

BASH
sudo node ./scripts/update-hosts.js

Sous Windows (PowerShell) : Ouvrez votre terminal en effectuant un clic droit puis Exécuter en tant qu'administrateur avant de lancer votre commande.

Méthode 3 : Élever les privilèges de manière ciblée en Node.js

Plutôt que d'exécuter l'intégralité de votre application en mode root (ce qui crée un risque de sécurité important avec les dépendances npm), isolez la modification du fichier hosts :

JAVASCRIPT
import sudo from 'sudo-prompt';

const options = {
  name: 'Gestionnaire Hosts Local'
};

const domainEntry = '127.0.0.1 monprojet.test';
const command = `sh -c 'echo "${domainEntry}" >> /etc/hosts'`;

sudo.exec(command, options, (error, stdout, stderr) => {
  if (error) {
    console.error('Erreur lors de la modification des hosts :', error);
    return;
  }
  console.log('Domaine ajouté au fichier hosts avec succès.');
});

Méthode 4 : Restaurer les permissions standards si le fichier est corrompu

Si vous avez accidentellement modifié les droits ou le propriétaire du fichier :

Sur macOS :

BASH
sudo chown root:wheel /etc/hosts
sudo chmod 644 /etc/hosts

Sur Linux (Ubuntu/Debian) :

BASH
sudo chown root:root /etc/hosts
sudo chmod 644 /etc/hosts

Pourquoi il ne faut JAMAIS faire un chmod 777 sur /etc/hosts

Un chmod 777 /etc/hosts rend le fichier modifiable par n'importe quel processus sur votre système.

  • N'importe quel paquet tiers ou script exécuté dans votre terminal pourrait rediriger des noms de domaine légitimes (banques, GitHub, NPM) vers des serveurs malveillants.
  • Le système d'exploitation et certains résolveurs de sécurité peuvent désactiver la lecture d'un fichier hosts dont les permissions sont jugées trop permissives.

Gérer ses environnements en toute sécurité avec Sleezr

Au lieu d'éditer manuellement votre fichier avec sudo ou de compromettre la sécurité de votre machine avec des scripts broad-root, une application native comme Sleezr gère vos groupes d'hôtes et utilise un helper sécurisé validé par le système pour appliquer les changements sans risque.

À lire aussiRésoudre Permission refusée sur Mac
À lire aussiGuide de dépannage du fichier hosts
Partager cet article

Questions fréquentes

Le fichier /etc/hosts est protégé par le système d’exploitation en écriture seule pour le compte root. Votre script tourne sous votre utilisateur standard sans privilèges élevés.

Non, c’est fortement déconseillé. Un chmod 777 permettrait à n’importe quel script ou dépendance npm non vérifiée de modifier vos résolutions DNS à votre insu.

La redirection shell (>>) est exécutée par votre terminal non privilégié avant que sudo n’agisse. Il faut utiliser la commande echo ... | sudo tee -a /etc/hosts.

Un gestionnaire de hosts dédié comme Sleezr utilise un helper privilégié isolé pour appliquer vos règles sans avoir à exécuter tout votre environnement en root.

Articles similaires

7 min de lecture
fichier hostspermissionsmacOS

Permission refusée fichier hosts Mac

Solutions complètes pour résoudre les erreurs de permission refusée lors de la modification du fichier hosts sur Mac. Commandes, outils, dépannage.

S

Sleezr Team

4 min de lecture
Node.jsDockerDNS

getaddrinfo ENOTFOUND dans Docker et Node.js : solutions

getaddrinfo ENOTFOUND ou EAI_AGAIN malgré une entrée dans /etc/hosts ? Résolvez l’isolation DNS Docker, le binding Node.js et les erreurs libc.

É

Équipe Sleezr

Outils développeurs

4 min de lecture
fichier hostsréinitialiserpar défaut

Réinitialiser le fichier hosts par défaut (Windows, Mac, Linux)

Réinitialisez et restaurez le fichier hosts par défaut sur Windows, macOS et Linux. Copiez le contenu par défaut exact, sauvegardez d’abord, puis videz le DNS pour appliquer.

É

Équipe Sleezr

Outils développeurs

4 min de lecture
fichier hostsdépannageDNS

Fichier hosts qui ne fonctionne pas ? Solutions Windows, Mac, Linux

Le fichier hosts est ignoré ou /etc/hosts ne s’applique pas ? Corrigez-le sous Windows, Mac et Linux : flush DNS, syntaxe, IPv6, fins de ligne, caches de résolveur et permissions.

É

Équipe Sleezr

Outils développeurs

9 min de lecture
fichier hostsdépannagemacOS

Fichier hosts Mac ne fonctionne pas : solutions

Vos modifications hosts ne prennent pas effet sur Mac ? Vérifiez cache DNS, permissions, syntaxe, navigateurs et proxies.

S

Sleezr Team

10 min de lecture
fichier hostsmacOSredémarrage

Modifications hosts perdues au redémarrage

Vos modifications hosts disparaissent après redémarrage sur Mac ? Causes possibles, SIP, agents système et solutions durables.

S

Sleezr Team