Izinkan Pengguna 'git' menjalankan 'git pull' sebagai 'www-data' melalui sudo

12

Saya ingin mengizinkan git untuk menjalankan 'git pull' sebagai pengguna 'www-data'. Sejauh yang saya mengerti git ALL = (www-data) git menarik / etc / sudoers harus membuatnya.

Sayangnya saya mendapatkan kesalahan Sintaks untuk baris ini dan sorotan Sintaks visudo rusak tepat setelah "-" di 'www-data'

Tidak dapat menemukan informasi tentang '-' terlarang di / etc / sudoers nama pengguna. Ada tips?

Ben
sumber

Jawaban:

11

Anda perlu menggunakan nama path lengkap untuk perintah 'git', baris berikut tidak menghasilkan kesalahan sintaks dalam visudo dan berfungsi dengan baik.

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

AlexD
sumber
6
@ Ben dan Anda tidak berbagi?
agrublev
9

Perhatikan bahwa saya menggunakan nama pengguna git , jadi, jika Anda menggunakan gitosis atau nama pengguna lain, cukup isi nama Anda!

Di konsol dengan pengguna root jalankan perintah ini:

visudo

Editor "vi" akan dibuka. Tambahkan baris ini:

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

Hasilnya, file (yang dibuka di editor "vi" dengan memanggil "visudo") akan terlihat seperti ini:

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

Kemudian tekan CTRL + O untuk menyimpan file, lalu tekan Enter untuk menerima nama file (bla bla bla), lalu tekan CTRL + X untuk menutup editor "vi".

Voila! Sekarang pengguna git dapat menjalankan perintah sebagai pengguna data-www :

sudo -u www-data git pull origin master
Taai
sumber