EPERM (errno 1)
errno 1
Messaggio ufficiale (come appare sullo schermo): Operation not permitted
Cercato anche come: Operation not permitted, errno 1, EPERM operation not permitted, npm ERR! code EPERM
Che cosa significa
EPERM, «Operation not permitted» (errno 1), significa che il kernel ha rifiutato un'operazione che richiede privilegi o proprietà che il processo non ha. Si distingue da EACCES: riguarda chi sei (root, proprietario, capability), non i bit dei permessi del file.
Si applica a: Linux, macOS (errno BSD), WSL, Container Docker
Come risolvere EPERM (errno 1)
- Controlla con quale utente gira il processo con 'id' e se l'azione richiede root (cambio di proprietà, socket raw, impostazione dell'ora di sistema)
- Se il file è tuo, controlla gli attributi immutable o append-only con 'lsattr file' e rimuovili con 'sudo chattr -i file'
- In Docker, il profilo seccomp predefinito e le capability rimosse causano EPERM; aggiungi la capability specifica (ad es. '--cap-add=NET_ADMIN') invece di usare '--privileged'
- Su macOS, EPERM sui file di Scrivania, Documenti o Download deriva spesso dalla protezione della privacy; concedi l'accesso completo al disco all'app Terminale
- Traccia la chiamata che fallisce con 'strace -f -e trace=%file,%process <comando>' per vedere esattamente quale syscall restituisce EPERM
- Controlla i rifiuti di SELinux o AppArmor ('ausearch -m avc -ts recent' oppure 'dmesg | grep -i apparmor')
- Per npm EPERM su percorsi Windows/WSL, chiudi gli editor o gli scanner antivirus che bloccano la cartella e riprova
Perché succede
Il kernel restituisce EPERM quando il chiamante non ha il privilegio o la capability necessari, quando la destinazione è immutabile, quando una policy seccomp o LSM blocca la syscall, oppure quando si opera in modo privilegiato su un processo o un file di un altro utente.
Domande frequenti
Qual è la differenza tra EPERM ed EACCES?
EACCES significa che i bit dei permessi del file o le ACL negano l'accesso. EPERM significa che l'operazione stessa richiede privilegi o proprietà che non hai, anche se i permessi sembrano a posto.
Perché ottengo EPERM anche con sudo?
Il file potrebbe essere immutabile (chattr +i), l'operazione potrebbe essere bloccata da SELinux/AppArmor o da seccomp, oppure su macOS dalla protezione della privacy.
Errori correlati
Fonte: Linux kernel errno.h · soluzioni scritte e verificate dalla redazione (vedi la nostra politica editoriale)
Ultimo aggiornamento: