尽管用户和组相同,但 shell 中有权限,但是衍生程序中没有权限?

尽管用户和组相同,但 shell 中有权限,但是衍生程序中没有权限?

我有用户和组测试:测试

当我在以测试身份登录的 shell 中时,我可以执行此操作git pull origin master,并且npm install它可以工作。

我还有一个从 Caddy(一个 Web 服务器)调用的 CGI 脚本。它做同样的事情作为同一用户但仍然会出现权限错误。

我该如何调试它?哪些命令可以告诉我为什么在 shell 中可以获得权限,但在从生成的脚本运行时却得不到权限?

脚本中的错误是

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

/home/test/.ssh已经存在,并且已经有密钥等。它们在 shell 中工作正常

对于 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生成的脚本无法访问。不确定正确的解决方案是什么,但至少找到了问题的根源

相关内容