Qual é a causa deste erro: Erro: EACCES, permissão negada

Qual é a causa deste erro: Erro: EACCES, permissão negada

Eu tenho dois três usuários:

db, nr, ba

Todos os três são membros do grupo dbp

Node.js está instalado em /usr/bin

Se eu executar o comando:

/usr/bin/node /home/db/dbb/m/i.js

Então funciona bem quando eu executo como usuário "ba". Mas se eu executá-lo como "nr", ele trava com o erro:

Error: EACCES, permission denied './manifest.json'

dbb tem permissões: drwxr-s--- db dbp manifest.json é um arquivo localizado na mesma pasta que i.js. O aplicativo parece iniciar e executar até tentar ler manifest.json, momento em que ele trava.

EDITAR: umask é 027

EDITAR: A saída de 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: apaguei a conta do usuário db, bem como o grupo dbp. Configurei o umask para 002. Em seguida, recriei apenas a conta do usuário db e tentei executar o comando /usr/bin/node /home/db/dbb/m/i.jscomo db, mas tive o mesmo erro.

Desta vez, quando fiz isso stat manifest.json, obtive a mesma saída:

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: -

Responder1

Este arquivo pertence ao usuário dbe ao grupo db:

Access: (0444/-r--r--r--)  Uid: ( 1001/db)   Gid: ( 1001/db)

Mas é legível mundialmente (444). A hierarquia de diretórios em que está não é, mas deve ser legível por group dbp,a menos que /home/dbtem permissões não padrão. Este pode ser o caso, já que sua umask (027) é mais rígida que o normal (002).

Caso contrário, parece que o erro EACCES provavelmente ocorreu porque o processo tentou abrir o arquivo paraescrita.

Responder2

Abra o terminal e digite o seguinte comando:

sudo chown -R $user:$group ./manifest.json

informação relacionada