2016-01-26 1 views
4

Quelle est exactement la différence entre EACCES et EPERM? EPERM est décrit here comme "pas super utilisateur", mais j'associerais habituellement cela avec EACCES. En fait, je ne me souviens pas d'avoir jamais vu une EPERM dans la vie réelle.Différence entre EACCES et EPERM

Répondre

5

EACCES est presque toujours utilisé lorsque l'appel système a été passé un chemin qui était inaccessible par l'utilisateur actuel.

EPERM est utilisé dans diverses autres situations où vous devez être root pour effectuer une action, par ex.

  • kill() sur un processus que vous ne possédez pas
  • link() sur un répertoire
  • reboot()
+0

Eh bien, link() sur un répertoire n'est pas normalement autorisé à root non plus, mais cette réponse semble bonne sinon. –

+0

@BruceFields Dépend du système d'exploitation. Certains ont autorisé les répertoires root à hardlink. (Pas même historiquement, macOS utilise activement cette fonctionnalité pour les sauvegardes.) – duskwuff

+0

Bon point! Peut-être aurais-je dû dire: "link() sur un répertoire retourne EPERM même sur les systèmes d'exploitation où les liens ne sont même pas autorisés à rooter". –

2

Selon Linux programmers, learn the difference between EACCES and EPERM already! - A Random Dev's Rants ...

  • EACCES "Autorisation refusée" devrait être utilisé pour signifier que l'utilisateur n'a pas suffisamment privilèges d'utilisateur pour effectuer l'action. L'utilisateur root, ou un autre utilisateur disposant des autorisations utilisateur/groupe suffisantes devrait être en mesure de faire l'action. "Opération non autorisée" doit être utilisé pour signifier que l'action n'est pas possible ou sûre en général, que l'utilisateur soit root ou non. Des exemples seraient:
    • chmod ing un fichier sur un système de fichiers FAT (le système de fichiers ne prend pas en charge les bits d'autorisation)
  • Notez que beaucoup de code Linux retourne EPERM quand il devrait vraiment revenir EACCES.
+1

Cette entrée de blog ne cite aucune source, et n'est pas d'accord avec les normes. Voir par exemple http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm. –

+0

@BruceFields: Hmm, vous faites un bon point. Je vais devoir regarder plus loin. –