我有两个三个用户:
db、nr、ba
三人都是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,此时它崩溃了。
编辑:umask 是 027
编辑: 的输出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: -
编辑:我删除了用户帐户 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