Подтвердить что ты не робот

Перезапустить nginx без sudo?

Итак, я хочу, чтобы уметь: развертывать без необходимости вводить пароли. Я установил все закрытые ключи, чтобы я мог нормально добраться до удаленных серверов, и теперь я использую svn over ssh, поэтому никаких паролей нет.

У меня есть одна последняя проблема, мне нужно перезапустить nginx. Сейчас у меня есть sudo/etc/init.d/nginx reload. Это проблема b/c, в которой используется пароль capistrano, тот, который я только что удалил b/c. Я использую ключи. Любые идеи о том, как перезапустить nginx с паролем?

4b9b3361

Ответ 1

Я просто провел хороший час, глядя на подстановочные знаки sudoer и тому подобное, пытаясь решить эту точную проблему. По правде говоря, все, что вам действительно нужно, это корневой исполняемый файл script, который перезапускает nginx.

Добавьте это в файл /etc/sudoers

username hostname ALL=NOPASSWD: /path/to/script

Напишите script как root

#! /bin/bash
/bin/kill -HUP `cat /var/run/nginx.pid`

Сделайте исполняемый файл script

Test.

sudo /path/to/script

Ответ 2

Существует более высокий ответ на переполнение стека, который не связан с записью пользовательского script:

Лучшей практикой является использование /etc/sudoers.d/myuser

Папка /etc/sudoers.d/ может содержать несколько файлов, которые позволяют пользователям для вызова материала с использованием sudo без root.

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

Инструкция:

Во всех командах замените myuser на имя вашего пользователя, которое вы хотите использовать для перезапуска nginx без sudo.

  • Откройте файл sudoers для вашего пользователя:

    $ sudo visudo -f /etc/sudoers.d/myuser
    
  • Откроется редактор. Там вы вставляете следующую строку. Это позволит пользователю запускать nginx, перезапускать и останавливать:

    $ myusername ALL=(ALL) NOPASSWD: /usr/sbin/service nginx start,/usr/sbin/service nginx stop,/usr/sbin/service nginx restart
    
  • Сохранить, нажав ctrl + o. Он спросит, где вы хотите сохранить, просто нажмите enter, чтобы подтвердить значение по умолчанию. Затем выйдите из редактора с помощью ctrl + x.

Теперь вы можете перезапустить (и запустить и остановить) nginx без пароля. Попробуйте.

  • Откройте новый сеанс (иначе вы можете просто не запрашивать пароль sudo, потому что он не был отключен):

    $ ssh [email protected]
    
  • Остановить nginx

    $ sudo /usr/sbin/service nginx stop
    
  • Подтвердите, что nginx остановился, проверив ваш сайт или запустив ps aux | grep nginx

  • Запустите nginx

    $ sudo /usr/sbin/service nginx start
    
  • Подтвердите, что nginx запустил проверку вашего веб-сайта или запуск ps aux | grep nginx

PS: Обязательно используйте sudo /usr/sbin/service nginx start|restart|stop, а не sudo service nginx start|restart|stop.