2016-02-14 5 views
0

Я хочу отказаться от доступа root к node.js из-за соображений безопасности, как упоминалось выше. Я изменил право собственности на папку nodejs, и теперь мне нужно убедиться, что узел запущен как пользователь abcКак убедиться, что узел запущен как пользователь?

Как я могу подтвердить его? я имел в виду на ссылку ниже для падения корневой доступ к Node.js, но не смог найти https://thomashunter.name/blog/drop-root-privileges-in-node-js/

Обычное использование для Node.js является для создания веб-приложений. Обычно мы хотим, чтобы эти приложения прослушивали порт 80. В качестве меры предосторожности большинству ОС требуются права root для этого (например, OS X, Linux, BSD). Чтобы запустить приложение Node таким образом, нам нужно сделать :

sudo node server.js Затем приложение запускается с правами root для остальной части сеанса. Однако есть потенциальные риски для безопасности. Что такое , если в вашем приложении есть уязвимость, а хакер запускает , контролируя ваше приложение и делая с ним непослушные вещи? К счастью, мы, , можем отбросить учетную запись пользователя, выполняющую наш процесс, до менее обеспеченного пользователя, , например, нашу обычную учетную запись. Существует два метода для процесса global, который может обрабатывать это для нас, .setgid() и .setuid().

Вот рабочий пример этого в действии. Мы хотим, чтобы запустить этот код ПОСЛЕ мы привязываем к порту 80, поэтому мы запускаем код в функции обратного вызова:

app.listen(80, 'localhost', null, function() { // Listening try { 
>  console.log('Old User ID: ' + process.getuid() + ', Old Group ID: ' + process.getgid()); 
>  process.setgid('users'); 
>  process.setuid('tlhunter'); 
>  console.log('New User ID: ' + process.getuid() + ', New Group ID: ' + process.getgid()); } catch (err) { 
>  console.log('Cowardly refusing to keep the process alive as root.'); 
>  process.exit(1); } }); 

Результаты .getuid() и .getgid() будут числовыми, и на самом деле не полезно, кроме как показано, что что-то произошло. Они, вероятно, как говорят, 0 в первый раз (это корень * NIX земли), а затем некоторые большее число впоследствии

+0

Вы прочитали код? –

+0

Да, я прочитал приведенный выше код, и для меня кажется, что код выполняет его реализацию. Но я не уверен, где и как я могу запустить программу с помощью командной строки на linux? любые указатели и помощь будут высоко оценены @ IgnacioVazquez-Abrams – harshal

+0

У вас нет. Это часть кода приложения. –

ответ

0
ps aux | grep node 

даст вам все запущенные процессы узла на хост-машине.

Но если я могу сказать еще одну вещь, никогда не связываться с портом 80, даже если вы привязываетесь как пользователь без root. Измените порт на что-то общее (8000) и настройте nginx как обратный прокси для обработки входящих HTTP-запросов и перенаправите его на узел на порт 8000

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