ユーザーとグループが同じであっても、シェルでは権限があるのに、生成されたプログラムからは権限がないのはなぜですか?

ユーザーとグループが同じであっても、シェルでは権限があるのに、生成されたプログラムからは権限がないのはなぜですか?

ユーザーとグループtest:testがあります

シェルでテストとしてログインしているときにgit pull origin masternpm installこれを実行すると動作します。

Caddy(ウェブ​​サーバー)から呼び出されるCGIスクリプトもあります。同じことを行います。同じユーザーとしてしかし、それでも権限エラーが発生します。

これをデバッグするにはどうすればいいでしょうか。シェル内では権限を取得できるのに、生成されたスクリプトから実行しているときには権限を取得できない理由を示すコマンドは何ですか?

スクリプトのエラーは

Could not create directory '/home/test/.ssh'.

/home/test/.sshすでに存在し、キーなどもすでに持っています。シェルからは正常に動作します。

npmではこれらのエラーが発生します

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'

しかし、やはりシェルから実行するとエラーは発生しません。

idスクリプトがどのユーザーで実行されているか確認できるようにスクリプトに追加しました。

uid=1000(test) gid=1000(test) groups=1000(test),27(sudo)

idこれはシェルに入力したときに出力されるものと全く同じです

他に何を探せばいいでしょうか?

答え1

問題はcaddyがsystemdから実行され、

ProtectHome=true 

つまり、/home/test生成されたスクリプトには立ち入り禁止です。正しい解決策が何であるかはわかりませんが、少なくとも問題の原因を追跡しました。

関連情報