
Tengo dos tres usuarios:
db, nr, ba
Los tres son miembros del grupo dbp.
Node.js está instalado en /usr/bin
Si ejecuto el comando:
/usr/bin/node /home/db/dbb/m/i.js
Entonces funciona bien cuando lo ejecuto como usuario "ba". Pero si lo ejecuto como "nr", falla y aparece el error:
Error: EACCES, permission denied './manifest.json'
dbb tiene permisos: drwxr-s--- db dbp
manifest.json es un archivo ubicado en la misma carpeta que i.js. La aplicación parece iniciarse y ejecutarse hasta que intenta leer manifest.json, momento en el que falla.
EDITAR: umask es 027
EDITAR: La salida de stat ./manifest.json
es:
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: -
EDITAR: Eliminé la base de datos de la cuenta de usuario, así como la base de datos del grupo. Configuré la umask en 002. Luego recreé solo la base de datos de la cuenta de usuario e intenté ejecutar el comando /usr/bin/node /home/db/dbb/m/i.js
como base de datos, pero obtuve el mismo error.
Esta vez, cuando lo hice stat manifest.json
, obtuve el mismo resultado:
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: -
Respuesta1
Este archivo es propiedad del usuario db
y grupo db
:
Access: (0444/-r--r--r--) Uid: ( 1001/db) Gid: ( 1001/db)
Pero es legible en todo el mundo (444). La jerarquía de directorios en la que se encuentra no lo es, pero debería ser legible por grupo dbp
.a menos que /home/db
tiene permisos no predeterminados. Este puede ser el caso ya que su umask (027) es más estricta de lo normal (002).
De lo contrario, parecería que el error EACCES probablemente ocurrió porque el proceso intentó abrir el archivo paraescribiendo.
Respuesta2
Abra la terminal y escriba el siguiente comando:
sudo chown -R $user:$group ./manifest.json