Linux: วิธีการให้สิทธิ์ผู้ใช้ในการรีสตาร์ท apache?


35

ฉันมีสคริปต์ที่ทำงานภายใต้ผู้ใช้ที่ไม่ใช่รูทซึ่งภายใต้เงื่อนไขบางประการควรรีสตาร์ท apache httpd

อะไรจะเป็นวิธีที่ง่ายที่สุดที่ฉันจะอนุญาตให้ผู้ใช้ทำเช่นนั้น?

ฉันใช้ Ubuntu Server 8.04 LTS

คำตอบ:


84

คำตอบสั้น ๆ :

ใช้visudoเพิ่มสิ่งต่อไปนี้ในไฟล์ sudoers ของคุณแทนที่ชื่อผู้ใช้ด้วยชื่อผู้ใช้ที่ถูกต้อง:

username ALL = /etc/init.d/apache2 

หากคุณไม่ต้องการพิมพ์รหัสผ่านก่อนที่จะทำสิ่งนี้ให้ใช้สิ่งต่อไปนี้:

username ALL = NOPASSWD: /etc/init.d/apache2 

หลังจากนี้ผู้ใช้ 'ชื่อผู้ใช้' สามารถเรียกใช้งานsudo /etc/init.d/apache2 start(หรือหยุดรีสตาร์ทเป็นต้น)

คำตอบยาว: คุณอาจต้องการตั้งค่าผู้ใช้แยกต่างหากสำหรับสิ่งนี้หากคุณยังไม่ได้ทำการกำหนดค่าไฟล์ / etc / sudoers เพื่ออนุญาตให้ผู้ใช้หรือกลุ่มเรียกใช้งานคำสั่งที่คุณต้องการ

ตัวอย่างเช่นในการอนุญาตให้ผู้ใช้ 'เบ็น' เรียกใช้งานคำสั่งทั้งหมดในฐานะที่เป็นพรอมต์ให้ใส่รหัสผ่านคุณจะต้องทำสิ่งต่อไปนี้:

ben ALL= ALL

ในการอนุญาตให้ 'ben' รันคำสั่งเดียวเท่านั้น (เช่น say, rm) คุณจะทำสิ่งต่อไปนี้:

ben ALL= /bin/rm 

หากคุณใช้งานสคริปต์ในฐานะผู้ใช้และไม่ต้องการให้ใส่รหัสผ่านคุณจะต้องใช้ตัวเลือก 'NOPASSWD' ดังนี้:

ben ALL=NOPASSWD: /bin/commandname options

คุณสามารถทำสิ่งเดียวกันสำหรับกลุ่มโดยนำหน้าชื่อกลุ่มด้วยเครื่องหมายเปอร์เซ็นต์เช่น:

%supportstaff          ALL= NOPASSWD: /bin/commandname 

2
สามารถusernameจำกัด พารามิเตอร์ย่อยได้หรือไม่? พูดstart restartแต่ไม่stop?
ThorSummoner

visudoคำสั่งไม่ตรวจสอบความปลอดภัยในการแก้ไขของคุณเพื่อให้คุณไม่ทำลายsudo/ suคำสั่งโดยอุบัติเหตุ: unix.stackexchange.com/a/27595/61349
ThorSummoner

1

คำตอบสั้น ๆ : sudo

การโทรจะมีลักษณะคล้ายกับที่แสดงต่อไปนี้: sudo /etc/init.d/apache2 restart

ที่ง่ายที่สุดคือใช้visudoเพื่อตั้งค่าไฟล์ / etc / sudoers ดูman sudoersและman visudoสำหรับรายละเอียด


OP กล่าวเกี่ยวกับการทำสคริปต์สคริปต์จะไม่สามารถป้อนรหัสผ่านดังนั้นคำตอบนี้จะไม่เข้าท่า
Matt Fletcher

@MattFletcher เว้นแต่คุณจะใช้NOPASSWD
Robin Kanters

0

คุณยังสามารถทำสิ่งนี้ได้ด้วยการเขียน wrapper ไปที่ apache2ctl, การมอบหมายความเป็นเจ้าของกลุ่มให้กับกลุ่มการบริหารเว็บและการตั้งค่า suid bit นี่เป็นโซลูชันทั่วไปที่น้อยกว่า visudo แต่อนุญาตให้มีข้อ จำกัด ที่กำหนดเองเกี่ยวกับความสามารถของผู้ใช้และการตรวจสอบข้อผิดพลาด

ฉันเขียนเครื่องมือนี้สำหรับความต้องการของฉันเองและแบ่งปันกับ github: https://github.com/josiahjohnston/ltd_apache2ctl

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