#javascript #php #node.js #ubuntu #path
#javascript #php #node.js #ubuntu #путь
Вопрос:
Я запускаю некоторые команды sudo -u www-data {command}
для выполнения некоторых операций только для контекста веб-сервера. Даже несмотря на то, что у меня есть NodeJS, установленные глобально и доступные в $PATH
корневом каталоге, при выполнении вышеуказанного происходит сбой, потому www-data
что имеет другой путь : /usr/local/bin
. Если я создаю символическую ссылку на узел из корневой .nvm
папки /usr/local/bin
, www-data
он может найти его, но не имеет разрешения на его запуск.
Мне интересно, как лучше всего запустить глобально установленный двоичный файл от пользователя, не являющегося домашним пользователем, например www-data
.
Для контекста: я делаю это, потому что мне нужно вызвать JS-скрипт из PHP-приложения, поэтому PHP (работающий от имени пользователя www-data
) должен иметь возможность вызывать node
, но не должен быть реальным пользователем, от имени которого люди могут войти в систему, для безопасности.
Ответ №1:
Символическая ссылка на /usr/local/bin
то www-data
, к чему у пользователя, не являющегося пользователем, есть доступ, сохранит разрешения оригинала, а оригинал находится в root
контексте. Естественно, www-data
невозможно проникнуть в это пространство имен без sudo
, что противоречит цели.
Способ решить эту проблему — установить двоичные /usr/local/bin
файлы напрямую, не связывая их символическими ссылками. Таким образом, нет превышения разрешений. Если node
установлен nvm
, достаточно просто скопировать этот двоичный /usr/local/bin
файл.