1

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

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

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

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

Ошибки в скрипте

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

/home/test/.ssh уже существует и уже имеет ключи и т. д. Они отлично работают из оболочки

для нпм он получает эти ошибки

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 ответ1

2

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

ProtectHome=true 

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .