
У меня двое-трое пользователей:
дБ, нр, ба
Все трое являются членами группы dbp
Node.js установлен в /usr/bin
Если я выполню команду:
/usr/bin/node /home/db/dbb/m/i.js
Затем он работает нормально, когда я запускаю его как пользователь "ba". Но если я запускаю его как "nr", то он вылетает с ошибкой:
Error: EACCES, permission denied './manifest.json'
dbb имеет разрешения: drwxr-s--- db dbp
manifest.json — файл, расположенный в той же папке, что и i.js Приложение, похоже, запускается и выполняется до тех пор, пока не попытается прочитать manifest.json, после чего происходит сбой.
EDIT: umask — 027
EDIT: Вывод stat ./manifest.json
:
File: `manifest.json'
Size: 251 Blocks: 8 IO Block: 4096 regular file
Device: ca00h/51712d Inode: 2598 Links: 1
Access: (0444/-r--r--r--) Uid: ( 1001/db) Gid: ( 1001/db)
Access: 2014-11-18 18:03:48.297158000 +0000
Modify: 2014-11-18 18:03:37.000000000 +0000
Change: 2014-11-18 18:03:48.298380902 +0000
Birth: -
EDIT: Я удалил учетную запись пользователя db, а также группу dbp. Я установил umask на 002. Затем я пересоздал только учетную запись пользователя db и попытался запустить команду /usr/bin/node /home/db/dbb/m/i.js
как db, но возникла та же ошибка.
На этот раз stat manifest.json
я получил тот же результат:
File: `manifest.json'
Size: 251 Blocks: 8 IO Block: 4096 regular file
Device: ca00h/51712d Inode: 2368 Links: 1
Access: (0444/-r--r--r--) Uid: ( 1001/db) Gid: ( 1001/db)
Access: 2014-11-18 19:08:35.709657000 +0000
Modify: 2014-11-18 18:03:37.000000000 +0000
Change: 2014-11-18 19:08:35.708011027 +0000
Birth: -
решение1
Этот файл принадлежит пользователю db
и группе db
:
Access: (0444/-r--r--r--) Uid: ( 1001/db) Gid: ( 1001/db)
Но доступен ли он для чтения всем (444). В иерархии каталогов он не указан, но он должен быть доступен для чтения группе dbp
,пока не /home/db
имеет нестандартные разрешения. Это может быть так, поскольку ваш umask (027) строже обычного (002).
В противном случае, ошибка EACCES, скорее всего, произошла из-за того, что процесс попытался открыть файл дляписьмо.
решение2
Откройте терминал и введите следующую команду:
sudo chown -R $user:$group ./manifest.json