Ich habe den Benutzer und die Gruppe test:test
Wenn ich als Tester bei der Shell angemeldet bin, kann ich es tun git pull origin master
und npm install
es funktioniert.
Ich habe auch ein CGI-Skript, das von Caddy (einem Webserver) aufgerufen wird. Es macht dasselbeals derselbe Benutzeraber es treten dennoch Berechtigungsfehler auf.
Wie debugge ich das? Welche Befehle zeigen mir, warum ich in der Shell die Berechtigung erhalte, aber nicht, wenn ich sie von einem erstellten Skript aus ausführe?
Die Fehler im Skript sind
Could not create directory '/home/test/.ssh'.
/home/test/.ssh
existiert bereits und hat bereits Schlüssel usw. Sie funktionieren gut von der Shell aus
für npm erhält es diese Fehler
npm ERR! Linux 4.4.0-87-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v6.11.2
npm ERR! npm v3.10.10
npm ERR! path /home/test/.npm/_locks
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir
npm ERR! Error: EACCES: permission denied, mkdir '/home/test/.npm/_locks'
Aber auch hier treten beim Ausführen über die Shell keine Fehler auf.
Ich habe id
das Skript ergänzt, damit ich sehen kann, unter welchem Benutzer das Skript ausgeführt wird. Es druckt
uid=1000(test) gid=1000(test) groups=1000(test),27(sudo)
Das ist genau das gleiche, was es ausgibt, wenn ich id
in die Shell tippe
Worauf sollte ich sonst noch achten?
Antwort1
Das Problem war, dass Caddy von systemd ausgeführt wird und auf
ProtectHome=true
was bedeutet, /home/test
dass das erzeugte Skript nicht mehr zugänglich ist. Ich bin mir nicht sicher, was die richtige Lösung ist, aber ich habe zumindest die Ursache des Problems gefunden