2017-02-16 3 views
0

На моем ноутбуке Ubuntu 14.04 я создаю файл ~/test.js с единственным содержимым console.log("Hi, this is Dog."). Я запускаю сценарий node test.js (узел v6.9.5), и получаю желаемый результат Hi, this is Dog.Сценарий запуска узла с конкретным пользователем

Затем я пытаюсь запустить скрипт как www-data. Так я бегу:

sudo -u www-data /usr/bin/node /home/me/test.js 

и ...

Error: Cannot find module '/home/me/test.js'

Что я делаю неправильно?

Я попытался с относительными и абсолютными путями,

sudo -u www-data sh -c "/usr/bin/node /home/me/test.js" 

изменили оболочку для www-data в /etc/passwd к /bin/bash и /bin/sh, и все комбинации этих идей. Такая же ошибка. Есть идеи?

+0

Лучше удалите теги Ubuntu, Linux и Node.js, так как ваш вопрос, по-видимому, в основном касается прав доступа к файлам, что не относится ни к одному из этих тегов. – Montmons

+0

Я чувствую, что это может быть что-то связанное с $ PATH или $ NODE_PATH или что-то в этом роде. Вот почему я, хотя эти теги имели смысл. –

+0

О, я вижу сейчас. – Montmons

ответ

0

Звучит для меня, что разрешения установлены так, что пользователь www-date не имеет доступа к файлу.

При входе в учетную запись пользователя, создавшего файл test.js, попробовать что-то вроде:

chmod a+wx test.js 

А затем запустить команду Судо снова.

+0

Не работает. Я также пробовал использовать 'chmod 777 test.js' и даже' chown www-data.www-data test.js'. Такая же ошибка. –

+0

Не могли бы вы попробовать что-то вроде 'sudo" PATH = $ PATH "-u www-data sh -c"/usr/bin/node /home/me/test.js "?? – Montmons

+0

Такая же ошибка: 'Ошибка: не могу найти модуль '/ home/me/test.js'' –

Смежные вопросы