Как получить доступ к глобальным двоичным файлам $PATH при запуске от имени пользователя no-home через sudo?

#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 файл.