Eu tenho usuário e grupo test:test
Quando estou no shell logado como teste posso fazer git pull origin master
e npm install
funciona.
Eu também tenho um script cgi que é chamado do Caddy (um servidor web). Faz a mesma coisacomo o mesmo usuáriomas ainda assim ocorre erros de permissão.
Como faço para depurar isso. Quais comandos me mostrarão por que estou obtendo permissão quando estou no shell, mas não quando executo a partir de um script gerado?
Os erros no script são
Could not create directory '/home/test/.ssh'.
/home/test/.ssh
já existe e já possui chaves, etc. Eles funcionam bem no shell
para npm ele recebe esses erros
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'
Mas, mais uma vez, não há erros ao executar a partir do shell.
Adicionei id
ao script para poder ver em qual usuário o script está sendo executado. Ele imprime
uid=1000(test) gid=1000(test) groups=1000(test),27(sudo)
Qual é exatamente a mesma coisa que imprime quando digito id
no shell
O que mais devo procurar?
Responder1
O problema era que o caddy é executado no systemd e foi configurado para
ProtectHome=true
o que significa /home/test
que está fora dos limites do script gerado. Não tenho certeza qual é a solução correta, mas pelo menos localizei a origem do problema