Разрешение в оболочке, но не в порожденной программе, хотя пользователь и группа совпадают?

Разрешение в оболочке, но не в порожденной программе, хотя пользователь и группа совпадают?

У меня есть пользователь и группа test:test

Когда я вхожу в оболочку как test, я могу это сделать git pull origin master, npm installи это работает.

У меня также есть cgi-скрипт, который вызывается из Caddy (веб-сервера). Он делает то же самоекак тот же пользовательно все равно возникают ошибки разрешения.

Как мне это отладить. Какие команды покажут мне, почему я получаю разрешение, когда нахожусь в оболочке, но не получаю его при запуске из порожденного скрипта?

Ошибки в сценарии:

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'

Но опять же, запуск из оболочки не выявил ошибок.

Я добавил idв скрипт, чтобы видеть, под каким пользователем выполняется скрипт. Он печатает

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

Это то же самое, что печатается, когда я печатаю idв оболочке

На что еще мне следует обратить внимание?

решение1

Проблема была в том, что caddy запускался из systemd и был настроен на

ProtectHome=true 

что означает, /home/testчто он находится вне пределов до порожденного скрипта. Не уверен, что это правильное решение, но, по крайней мере, отследил источник проблемы

Связанный контент