อนุญาตให้ผู้ใช้ '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


6
@Ben และคุณไม่ได้แชร์?
agrublev

9

โปรดสังเกตว่าฉันใช้ชื่อผู้ใช้gitดังนั้นหากคุณกำลังใช้gitosisหรือชื่อผู้ใช้อื่น ๆ เพียงกรอกชื่อของคุณ!

ในคอนโซลที่มีผู้ใช้รูทรันคำสั่งนี้:

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"

Voila! ตอนนี้ผู้ใช้คอมไพล์สามารถรันคำสั่งในฐานะผู้ใช้www-data :

sudo -u www-data git pull origin master
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.