Penguin

Permission Denied

This is often confused with EPERM, to quote SUSv3:

Permission denied. An attempt was made to access a file in a way forbidden by its file access permissions.

Examples include:

  • trying to lower a process's nice(1) value (ie make it a higher priority process) when you are not the superuser. (nice uses the setpriority(2) call, not the nice(2) call which returns EPERM).
  • trying to unlink(2) (delete) a file when you do not have write access to the file or the directory, or open a file for reading when you do not have read access.
  • doing something SELinux prohibits.

In general, EACCES seems morely to be used for file permission conflicts, while EPERM seems more likely to be used for process-related permission conflicts. But you can see that even system calls use them differently.