ฉันต้องการ sudo โดยไม่ต้องใส่รหัสผ่านสำหรับสคริปต์ ฉันไปผิดที่ไหน


9

ฉันอยู่ในกลุ่ม sudo:

$ id
uid=1002(molot) gid=1002(molot) groups=1002(molot),27(sudo),33(www-data)

ใน sudores ของฉันฉันดูเหมือนจะมีการตั้งค่าที่เหมาะสม:

sudo    ALL=(ALL:ALL) NOPASSWD: ALL

และเป็นบรรทัดที่ไม่ใส่เครื่องหมายสุดท้ายที่นั่น

แต่เมื่อฉันพยายามgit pullฉันจะพิมพ์รหัสผ่านของฉันอีกครั้ง:

$ sudo -u www-data git --git-dir /var/www/.git --work-tree /var/www pull "origin" master
[sudo] password for molot:

ไม่มีปัญหาเมื่อฉันเข้าสู่ระบบคอนโซล แต่มันไม่เป็นที่ยอมรับในสคริปต์ ดังนั้นฉันจะอนุญาตให้ทุกคนในกลุ่ม sudo สามารถ git pull เป็น www-data โดยไม่ต้องพิมพ์รหัสผ่านซ้ำได้อย่างไร

เมื่อฉันใส่ชื่อของฉันโดยตรง:

molot ALL=(ALL) NOPASSWD: ALL

มันใช้งานได้สำหรับฉัน แต่เห็นได้ชัดว่าไม่ใช่สำหรับผู้ใช้แมเรียนหรือผู้ใช้รายอื่นจากกลุ่ม sudo เท่าที่ฉันเข้าใจด้วยตนเองชื่อผู้ใช้และชื่อกลุ่มควรทำงานในไฟล์แรก


คุณไม่สามารถsudo -u www-data ./your_script.sh? วัตถุประสงค์ของสคริปต์คืออะไร?
jimbobmcgee

@ jimbobmcgee เป็นตะขอคอมไพล์ดังนั้นไม่ฉันไม่สามารถเติมอะไรให้มันเลย มันถูกเรียกโดยผู้ใช้ที่ผลักดันการเปลี่ยนแปลงคอมไพล์และฉันไม่พบวิธีที่แท้จริงรอบ ๆ มัน
Mołot

ฟิลด์แรก (หากฉันเข้าใจอย่างรวดเร็วเกี่ยวกับsudoersรูปแบบไฟล์ที่ถูกต้อง) คือชื่อผู้ใช้ของผู้ใช้ที่กล่าวอ้าง คุณได้ลองแทนที่ด้วยไว*ด์การ์ดหรือผู้ใช้ git hook นั้นทำงานอย่างไร
CVn

@ MichaelKjörlingตามที่ระบุไว้ที่นี่คุณควรจะเขียนทั้งผู้ใช้และกลุ่มในฟิลด์แรก *ไม่ทำงาน, ไม่เป็นผล. การใส่ชื่อของฉันเข้ากับฉันได้โดยตรง ... แต่ไม่ใช่สำหรับผู้ใช้คนอื่นในกลุ่ม sudo แน่นอน
Mołot

@ MichaelKjörlingขอบคุณความคิดเห็นของคุณทำให้ฉันมองหาตัวอักษรพิเศษและอนุญาตให้ฉันค้นหาคำตอบ: D แก้ไข: ลบคำตอบด้วยตนเองและยอมรับคำตอบของบุคคลที่สามจากช่วงเวลาเดียวกัน
Mołot

คำตอบ:


19

ดูเหมือนว่าคุณมีบรรทัดที่เกี่ยวข้องใน sudoers ของคุณขาดอักขระ:

sudo ALL = (ALL: ALL) NOPASSWD: ALL

ตรงกับผู้ใช้ชื่อ 'sudo' สำหรับ 'ผู้ใช้ทั้งหมดในกลุ่ม sudo' ควรเป็น:

% sudo ALL = (ALL: ALL) NOPASSWD: ALL

(สังเกตเครื่องหมาย% ที่จุดเริ่มต้น)


1
อานั่นคือสิ่งที่มีความหมาย%ใน %wheel
nikhil

1

sudo visudo

จากนั้นสมมติว่าmolotเป็นชื่อผู้ใช้ของคุณไปที่จุดสิ้นสุดของไฟล์และ:

molot ALL=(ALL) NOPASSWD: ALL

สิ่งนี้ควรใช้งานได้ แต่หากไม่เป็นเช่นนั้นให้เราโพสต์


วิธีนี้ใช้ได้ผล สำหรับฉัน. แต่เห็นได้ชัดว่าไม่ใช่เพื่อแมเรียนหรือผู้ใช้อื่น ๆ ในกลุ่ม sudo
Mołot

จากนั้นสร้างชื่อแทนผู้ใช้ ( User_Alias) และให้สิทธิ์ในการเรียกใช้คำสั่งเฉพาะในฐานะรูท ( Runas_Alias) ฉันไม่ทราบว่ากลุ่มของคุณมีการตั้งค่าอย่างไรคุณสามารถดู Sudoers wiki help.ubuntu.com/community/Sudoers มันกระชับจริงๆ ตรวจสอบส่วน "ข้อมูลจำเพาะผู้ใช้" สิ่งนี้น่าจะช่วยได้
Jugurtha Hadjar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.