我有用戶和群組測試:測試
當我在 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
產生的腳本不受限制。不確定正確的解決方案是什麼,但至少找到了問題的根源