ฉันมีสคริปต์ที่ทำงานภายใต้ผู้ใช้ที่ไม่ใช่รูทซึ่งภายใต้เงื่อนไขบางประการควรรีสตาร์ท apache httpd
อะไรจะเป็นวิธีที่ง่ายที่สุดที่ฉันจะอนุญาตให้ผู้ใช้ทำเช่นนั้น?
ฉันใช้ Ubuntu Server 8.04 LTS
ฉันมีสคริปต์ที่ทำงานภายใต้ผู้ใช้ที่ไม่ใช่รูทซึ่งภายใต้เงื่อนไขบางประการควรรีสตาร์ท apache httpd
อะไรจะเป็นวิธีที่ง่ายที่สุดที่ฉันจะอนุญาตให้ผู้ใช้ทำเช่นนั้น?
ฉันใช้ Ubuntu Server 8.04 LTS
คำตอบ:
คำตอบสั้น ๆ :
ใช้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
visudo
คำสั่งไม่ตรวจสอบความปลอดภัยในการแก้ไขของคุณเพื่อให้คุณไม่ทำลายsudo
/ su
คำสั่งโดยอุบัติเหตุ: unix.stackexchange.com/a/27595/61349
คำตอบสั้น ๆ : sudo
การโทรจะมีลักษณะคล้ายกับที่แสดงต่อไปนี้: sudo /etc/init.d/apache2 restart
ที่ง่ายที่สุดคือใช้visudo
เพื่อตั้งค่าไฟล์ / etc / sudoers ดูman sudoers
และman visudo
สำหรับรายละเอียด
คุณยังสามารถทำสิ่งนี้ได้ด้วยการเขียน wrapper ไปที่ apache2ctl, การมอบหมายความเป็นเจ้าของกลุ่มให้กับกลุ่มการบริหารเว็บและการตั้งค่า suid bit นี่เป็นโซลูชันทั่วไปที่น้อยกว่า visudo แต่อนุญาตให้มีข้อ จำกัด ที่กำหนดเองเกี่ยวกับความสามารถของผู้ใช้และการตรวจสอบข้อผิดพลาด
ฉันเขียนเครื่องมือนี้สำหรับความต้องการของฉันเองและแบ่งปันกับ github: https://github.com/josiahjohnston/ltd_apache2ctl
username
จำกัด พารามิเตอร์ย่อยได้หรือไม่? พูดstart
restart
แต่ไม่stop
?