
EACCES: permission denied sur /etc/hosts : comment corriger
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.
Sommaire
- Comment corriger l'erreur EACCES: permission denied sur /etc/hosts
- Comprendre la structure des permissions de /etc/hosts
- Les 4 méthodes pour résoudre l'erreur
- Méthode 1 : L'erreur classique de la redirection shell
- Méthode 2 : Lancer un script Node.js ou un outil de build avec sudo
- Méthode 3 : Élever les privilèges de manière ciblée en Node.js
- Méthode 4 : Restaurer les permissions standards si le fichier est corrompu
- Pourquoi il ne faut JAMAIS faire un chmod 777 sur /etc/hosts
- Gérer ses environnements en toute sécurité avec Sleezr
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 :
ls -la /etc/hostsLe terminal affiche généralement :
-rw-r--r-- 1 root wheel 213 Aug 17 10:00 /etc/hostsL'analyse des permissions :
- Propriétaire (
root) : Droits de lecture et écriture (rw-). - Groupe (
wheelouroot) : 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 :
# Ne fonctionne pas :
sudo echo "127.0.0.1 api.local.test" >> /etc/hostsLe 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 :
echo "127.0.0.1 api.local.test" | sudo tee -a /etc/hosts > /dev/nullL'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 :
sudo node ./scripts/update-hosts.jsSous 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 :
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 :
sudo chown root:wheel /etc/hosts
sudo chmod 644 /etc/hostsSur Linux (Ubuntu/Debian) :
sudo chown root:root /etc/hosts
sudo chmod 644 /etc/hostsPourquoi 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.
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
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.
Sleezr Team
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
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
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
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.
Sleezr Team
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.
Sleezr Team