В чем разница между EACCES и EPERM в точности? EPERM описывается here как «не суперпользователь», но я обычно ассоциировал это с EACCES. На самом деле, я не могу вспомнить, что когда-либо видел EPERM в реальной жизни.Разница между EACCES и EPERM
ответ
EACCES
почти всегда используется, когда системному вызову был передан путь, недоступный для текущего пользователя.
EPERM
используется в различных ситуациях, когда вам необходимо быть root для выполнения действия, например.
kill()
о процессе, который вы не владеетеlink()
на каталогreboot()
Согласно Linux programmers, learn the difference between EACCES and EPERM already! - A Random Dev's Rants ...
EACCES
"Отказано в доступе" следует использовать для обозначения того, что пользователю не хватает привилегии для выполнения действия. Пользователь root или другой пользователь с достаточными правами пользователя/группы должны иметь возможность выполнить действие.EPERM
«Операция не разрешена» должна использоваться для обозначения того, что действие невозможно или безопасно в целом, независимо от того, является ли пользователь root или нет. Примерами могут служить:chmod
ИНГ файл на файловой системе FAT (файловая система не поддерживает биты разрешения)
- Обратите внимание, что много кода Linux возвращает
EPERM
, когда он должен действительно вернутьEACCES
.
В этой записи в блоге нет источников и не согласуется со стандартами. См. http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm. –
@BruceFields: Хм, ты хорошо говоришь. Мне нужно будет изучить это дальше. –
- 1. Разница между композитором.phar между | и ||
- 2. EPERM fs.rename
- 3. Разница между ~/и ../
- 4. разница между $ и $$
- 5. разница между & и * Декларация
- 6. Разница между% и/
- 7. Разница между jquery и $
- 8. разница между -> и ::
- 9. Разница между. и ==
- 10. разница между Scala «+:» и «::»
- 11. Grails: Разница между \ $ {} и $ {}
- 12. Разница между! и ~
- 13. разница между (*) [] и * [] декларации
- 14. Разница между == и .equals()?
- 15. Разница между fmod и%
- 16. Разница между === и ==
- 17. Разница между комментариями/* */и/** * /?
- 18. Разница между ./ и ~/
- 19. Разница между: = и not (=)
- 20. разница между «/» и Слим
- 21. разница между 'есть' и '=='
- 22. Разница между «источником» и «.»
- 23. разница между `% в%` и `` ==
- 24. OCaml разница между :: и @
- 25. разница между $ @ и $ *
- 26. разница между! = И! ==
- 27. htaccess - Разница между. * И \ *
- 28. разница Javascript между «=» и «===»
- 29. Разница между «+» и «~»
- 30. какая разница между @ и @ :?
Ну, link() в каталоге, как правило, также не разрешено использовать root, но в противном случае этот ответ кажется хорошим. –
@BruceFields Зависит от ОС. Некоторые из них разрешили root каталогов с жесткими ссылками. (Даже не исторически, MacOS активно использует эту функцию для резервного копирования.) – duskwuff
Хорошая точка! Возможно, мне следовало бы сказать: «link() в каталоге возвращает EPERM даже на OS, где hardlinks не разрешено даже root». –