Дозволити користувачеві "git" запускати "git pull" як "www-data" через sudo


12

Я хотів би дозволити git запускати 'git pull' як користувачеві 'www-data'. Наскільки я розумію git ALL = (www-data) git pull / etc / sudoers повинен це зробити.

На жаль, я отримую синтаксичну помилку для цього рядка, а підсвітка синтаксису visudo розривається відразу після "-" у "www-data"

Не вдається знайти інформацію щодо заборонених імен користувачів "-" в / etc / sudoers. Якісь поради?

Відповіді:


11

Потрібно використовувати повну назву шляху для команди "git", наступні рядки не створюють синтаксичну помилку у візуальному режимі і справно працює.

git ALL = (www-data) /usr/bin/git pull


6
@Ben, і ти не поділився?
agrublev

9

Зверніть увагу, що я використовую ім'я користувача git , тому, якщо ви використовуєте gitosis або будь-яке інше ім’я користувача, просто заповніть своє!

У консолі з користувачем root виконайте цю команду:

visudo

Відкриється редактор "vi". Додайте ці рядки:

Defaults:git    !authenticate
git ALL=(www-data) ALL

У результаті файл (який відкривається в редакторі "vi", викликаючи "visudo") повинен виглядати так:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults    env_reset
Defaults:git    !authenticate

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL
git ALL=(www-data) ALL


# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d

Потім натисніть CTRL + O, щоб зберегти файл, потім натисніть Enter, щоб прийняти ім'я файлу (bla bla bla), а потім натисніть CTRL + X, щоб закрити редактор "vi".

Вуаля! Тепер користувач git може виконувати команди як користувач www-data :

sudo -u www-data git pull origin master
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.