У меня есть пользователь и группа 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
что он находится вне пределов до порожденного скрипта. Не уверен, что это правильное решение, но, по крайней мере, отследил источник проблемы