Назад | Перейти на главную страницу

sudoers nopasswd переключить пользователя и запустить узел не работает

Я пытаюсь предотвратить запрос пароля в команде, запускающей узел как пользователь www, добавив следующую строку в конец моего файла / etc / sudoers:

gituser ALL=(ALL) NOPASSWD: /usr/bin/sudo -u web-user NODE_ENV=production /path/to/node app.js

Я также попытался поместить команду в сценарий оболочки и запустить ее, но без радости:

gituser ALL=(root) NOPASSWD: /usr/local/sbin/startnode

У кого-нибудь есть идеи, что я делаю не так?

В конечном итоге я буду запускать это как службу-выскочку, поэтому команда будет «sudo service runnode stop / start» и будет запускаться из ловушки git, но я предполагаю, что принцип будет таким же.

К вашему сведению, полное содержимое файла sudoers:

Defaults        env_reset
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Defaults
root    ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL) ALL

gituser ALL=(ALL) NOPASSWD: /usr/bin/sudo -u web-user NODE_ENV=production /path/to/node app.js
gituser ALL=(root) NOPASSWD: /usr/local/sbin/startnode

Спасибо всем за ответы. Мне удалось заставить его работать в конце с помощью этого Почта сделав следующее:

1. Использование отдельного скрипта

Добавьте эту строку в файл sudoers (используя visudo).

gituser ALL=(web-user) NOPASSWD: /usr/local/sbin/startnode

Содержимое файла / usr / local / sbin / startnode изменено на следующее:

#!/bin/bash

cd /var/www/api.vitdsunshine.com/sun-express

########## BEFORE
# sudo -u web-user NODE_ENV=production /path/to/node app.js

########## AFTER
NODE_ENV=production /path/to/node app.js

Теперь это будет работать:

$ sudo -u web-user startnode

2. Используя полную команду

Добавьте эту строку в файл sudoers (используя visudo).

gituser ALL=(web-user) NOPASSWD: /path/to/node

Попытка установить переменную env как часть команды приводит к сбою.

$ sudo -u web-user NODE_ENV=production /path/to/node app.js
sudo: sorry, you are not allowed to set the following environment variables: NODE_ENV

Решение: вы должны установить эту переменную env в файле .bashrc веб-пользователя или в / etc / environment.

$ sudo -u web-user /path/to/node app.js
env production
Express server listening on port 9000