EPERM (errno 1)
errno 1
Message officiel (tel qu'affiché à l'écran) : Operation not permitted
Aussi recherché sous la forme : Operation not permitted, errno 1, EPERM operation not permitted, npm ERR! code EPERM
Ce que cela signifie
EPERM, « Operation not permitted » (errno 1), signifie que le noyau a refusé une opération nécessitant des privilèges ou une propriété que le processus n’a pas. Elle diffère d’EACCES : elle concerne qui vous êtes (root, propriétaire, capacités), et non les bits de permission du fichier.
S'applique à : Linux, macOS (errno BSD), WSL, Conteneurs Docker
Comment corriger EPERM (errno 1)
- Vérifiez sous quel utilisateur le processus s’exécute avec 'id' et si l’action exige root (changement de propriétaire, sockets bruts, réglage de l’heure système)
- Si vous êtes propriétaire du fichier, recherchez des attributs immuable ou en ajout seul avec 'lsattr fichier' et retirez-les avec 'sudo chattr -i fichier'
- Dans Docker, le profil seccomp par défaut et les capacités retirées provoquent EPERM ; ajoutez la capacité précise (par exemple '--cap-add=NET_ADMIN') plutôt que d’utiliser '--privileged'
- Sous macOS, EPERM sur des fichiers de Bureau, Documents ou Téléchargements vient souvent de la protection de la vie privée ; accordez l’accès complet au disque à l’application Terminal
- Tracez l’appel en échec avec 'strace -f -e trace=%file,%process <commande>' pour voir précisément quel appel système renvoie EPERM
- Recherchez les refus SELinux ou AppArmor ('ausearch -m avc -ts recent' ou 'dmesg | grep -i apparmor')
- Pour npm EPERM sur des chemins Windows/WSL, fermez les éditeurs ou analyseurs antivirus qui verrouillent le dossier, puis réessayez
Pourquoi cela se produit
Le noyau renvoie EPERM lorsque l’appelant n’a pas le privilège ou la capacité requis, lorsque la cible est immuable, lorsqu’une politique seccomp ou LSM bloque l’appel système, ou lorsqu’on agit de manière privilégiée sur le processus ou le fichier d’un autre utilisateur.
FAQ
Quelle est la différence entre EPERM et EACCES ?
EACCES signifie que les bits de permission ou les ACL du fichier refusent l’accès. EPERM signifie que l’opération elle-même exige des privilèges ou une propriété que vous n’avez pas, même si les permissions semblent correctes.
Pourquoi ai-je EPERM même avec sudo ?
Le fichier est peut-être immuable (chattr +i), l’opération bloquée par SELinux/AppArmor ou seccomp, ou, sous macOS, par la protection de la vie privée.
Erreurs liées
Source : Linux kernel errno.h · solutions rédigées et vérifiées par les éditeurs (voir notre politique éditoriale)
Dernière mise à jour :