Разрешить пользователю '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', следующие строки не вызывают синтаксической ошибки в visudo и работают нормально.

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

AlexD
источник
6
@ Бен, а ты не поделился?
17
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, чтобы принять имя файла (бла-бла-бла), затем нажмите CTRL + X, чтобы закрыть редактор «vi».

Вуаля! Теперь пользователь git может выполнять команды как пользователь www-data :

sudo -u www-data git pull origin master
Taai
источник