即使使用者和群組相同,shell 中的權限但不是來自生成的程式的權限?

即使使用者和群組相同,shell 中的權限但不是來自生成的程式的權限?

我有用戶和群組測試:測試

當我在 shell 中作為測試登入時,我可以執行git pull origin master並且npm install它可以工作。

我還有一個從 Caddy(網頁伺服器)呼叫的 cgi 腳本。它做同樣的事情作為同一用戶但它仍然出現權限錯誤。

我該如何調試這個。哪些命令會告訴我為什麼我在 shell 中獲得了權限,但在從生成的腳本運行時卻沒有獲得權限?

腳本中的錯誤是

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'

但再一次,從 shell 運行沒有錯誤。

我添加id到腳本中,以便我可以看到腳本以哪個用戶身份運行。它列印

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

id這與我在 shell 中輸入時列印的內容完全相同

我還應該尋找什麼?

答案1

問題是 caddy 是從 systemd 運行的,並且它被設定為

ProtectHome=true 

這意味著/home/test產生的腳本不受限制。不確定正確的解決方案是什麼,但至少找到了問題的根源

相關內容