Tengo prueba de usuario y grupo: prueba
Cuando estoy en el Shell conectado como prueba, puedo hacerlo git pull origin master
y npm install
funciona.
También tengo un script cgi que se llama desde Caddy (un servidor web). hace la misma cosacomo el mismo usuariopero aún así recibe errores de permiso.
¿Cómo depuro esto? ¿Qué comandos me mostrarán por qué obtengo permiso cuando estoy en el shell pero no cuando ejecuto desde un script generado?
Los errores en el guión son
Could not create directory '/home/test/.ssh'.
/home/test/.ssh
ya existe y ya tiene claves, etc. Funcionan bien desde el shell
para npm obtiene estos errores
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'
Pero una vez más, al ejecutar desde el shell no se producen errores.
Agregué id
al script para poder ver con qué usuario se ejecuta el script. se imprime
uid=1000(test) gid=1000(test) groups=1000(test),27(sudo)
Que es exactamente lo mismo que imprime cuando escribo id
en el shell
¿Qué más debería buscar?
Respuesta1
El problema era que caddy se ejecuta desde systemd y estaba configurado en
ProtectHome=true
lo que significa /home/test
que está fuera del alcance del script generado. No estoy seguro de cuál es la solución correcta, pero al menos localicé el origen del problema.