Berechtigung in der Shell, aber nicht vom erzeugten Programm, obwohl Benutzer und Gruppe identisch sind?

Berechtigung in der Shell, aber nicht vom erzeugten Programm, obwohl Benutzer und Gruppe identisch sind?

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 masterund npm installes 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/.sshexistiert 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 iddas 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 idin 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/testdass 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

verwandte Informationen