2016-02-24 2 views
0

Я добавил строку /etc/rc.local, что запускает процесс после перезагрузки узла:работает nodejs некорневые

/usr/local/bin/node /home/ubuntu/app/index.js & 

проблема заключается в том, что процесс работает как root.

Как я могу указать пользователя без полномочий root для запуска процесса узла как?

+0

'су -c' возможно ? – CollinD

ответ

1

Я хотел бы попробовать это, но я не проверял его в контексте:

exec sudo -u nodejs /usr/local/bin/node /home/ubuntu/app/index.js & 
1

Сообщите, что система для запуска вашего процесса как другого пользователя, кроме root, будет более подходящим для форумов Ubuntu или сайта Unix SE.

Как изменить пользователя для пользователя, не являющегося привилегированным, из процесса Node.js, вы можете использовать process.setuid() и process.setgid() для изменения идентификаторов пользователей и групп соответственно.

Обратите внимание, что как только вы измените их на значения, отличные от root, вы не сможете вернуться к привилегированным привилегиям root.

1

Вы можете запустить его с другим пользователем с этой линии:

su -c "/usr/local/bin/node /home/ubuntu/app/index.js" & -s /bin/sh <username> 
+0

похоже, что он должен работать, но когда я делаю 'ps aux | grep node' Я вижу, что процесс все еще работает как root, хотя команда, которую я ввела, приказал запустить ее как пользователь 'ubuntu', это ожидалось? – neo112

+0

Можете ли вы попытаться разрешить узлу доступ к файлу, к которому должен иметь доступ только root? Это не должно работать. @ neo112 – baao

+0

он разбивается на две разные команды, сначала он пытается запустить процесс узла, который преуспевает (но с правами администратора), а затем пытается использовать оболочку в качестве другого пользователя после этого, но это не удается: '-s: command not found '. Я попытался поиграть с параметрами -c и -s, но не имел успеха, вы можете обнаружить, что может быть не в порядке? – neo112

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