
Ich habe zwei drei Benutzer:
db, nr, ba
Alle drei sind Mitglieder der Gruppe dbp
Node.js ist in /usr/bin installiert.
Wenn ich den Befehl ausführe:
/usr/bin/node /home/db/dbb/m/i.js
Dann funktioniert es einwandfrei, wenn ich es als Benutzer „ba“ ausführe. Aber wenn ich es als „nr“ ausführe, stürzt es mit dem Fehler ab:
Error: EACCES, permission denied './manifest.json'
dbb hat Berechtigungen: drwxr-s--- db dbp
manifest.json ist eine Datei, die sich im selben Ordner wie i.js befindet. Die App scheint zu starten und auszuführen, bis sie versucht, manifest.json zu lesen, woraufhin sie abstürzt.
BEARBEITEN: umask ist 027
BEARBEITEN: Die Ausgabe stat ./manifest.json
ist:
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: -
BEARBEITEN: Ich habe das Benutzerkonto db sowie die Gruppe dbp gelöscht. Ich habe die Umask auf 002 gesetzt. Dann habe ich nur das Benutzerkonto db neu erstellt und versucht, den Befehl /usr/bin/node /home/db/dbb/m/i.js
als db auszuführen, aber es trat derselbe Fehler auf.
Als ich dies dieses Mal tat stat manifest.json
, erhielt ich die gleiche Ausgabe:
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: -
Antwort1
Diese Datei gehört dem Benutzer db
und der Gruppe db
:
Access: (0444/-r--r--r--) Uid: ( 1001/db) Gid: ( 1001/db)
Aber es ist allgemein lesbar (444). Die Verzeichnishierarchie, in der es sich befindet, ist es nicht, aber es sollte für die Gruppe lesbar sein dbp
.es sei denn /home/db
hat nicht standardmäßige Berechtigungen. Dies kann der Fall sein, weil Ihre Umask (027) strenger ist als normal (002).
Andernfalls ist der EACCES-Fehler wahrscheinlich aufgetreten, weil der Prozess versucht hat, die Datei fürSchreiben.
Antwort2
Öffnen Sie das Terminal und geben Sie den folgenden Befehl ein:
sudo chown -R $user:$group ./manifest.json