Pozwól użytkownikowi „git” na uruchomienie „git pull” jako „www-data” przez sudo

12

Chciałbym umożliwić gitowi uruchamianie „git pull” jako użytkownika „www-data”. O ile rozumiem git ALL = (www-data) git pull / etc / sudoers powinien to zrobić.

Niestety otrzymuję błąd składni dla tej linii i visudo Podświetlenie składni przerywa się zaraz po „-” w „www-data”

Nie można znaleźć informacji dotyczących zabronionych „-” w nazwach użytkowników / etc / sudoers. Jakieś wskazówki?

Ben
źródło

Odpowiedzi:

11

Musisz użyć pełnej nazwy ścieżki dla polecenia „git”, następujące wiersze nie powodują błędu składniowego w visudo i działają dobrze.

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

AlexD
źródło
6
@Ben, a ty nie udostępniałeś?
agrublev,
9

Zauważ, że używam nazwy użytkownika git , więc jeśli używasz gitosis lub innej nazwy użytkownika, wypełnij swoją!

W konsoli użytkownika root wykonaj następujące polecenie:

visudo

Zostanie otwarty edytor „vi”. Dodaj te linie:

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

W rezultacie plik (otwierany w edytorze „vi” przez wywołanie „visudo”) powinien wyglądać następująco:

# /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

Następnie naciśnij CTRL + O, aby zapisać plik, następnie naciśnij Enter, aby zaakceptować nazwę pliku (bla bla bla), a następnie naciśnij CTRL + X, aby zamknąć edytor „vi”.

Voila! Teraz użytkownik git może wykonywać polecenia jako użytkownik danych www :

sudo -u www-data git pull origin master
Taai
źródło