ฉันต้องการอนุญาตให้ผู้ใช้ในdba
กลุ่มสามารถควบคุมdatabase@
บริการได้ คำตอบสำหรับคำถามที่เกี่ยวข้องนี้คือการทำรายการsystemctl
"คำกริยา" ทั้งหมดที่ฉันต้องการอนุญาตในsudoers
ไฟล์อย่างไรก็ตามนั่นไม่ได้ใช้กับกรณีของฉันเพราะฉันไม่รู้ว่าฐานข้อมูลใดที่อาจมีอยู่ในระบบ ตัวอย่างเช่นถ้าฉันแสดง
%dba = /usr/bin/systemctl start database@awsesomeapp
%dba = /usr/bin/systemctl start database@anotherawsesomeapp
%dba = /usr/bin/systemctl start database@yetanotherawsesomeapp
%dba = /usr/bin/systemctl start database@wowyetanotherawsesomeapp
# ... other "verbs" omitted for brevity
ที่ไม่ครอบคลุมอินสแตนซ์ที่อาจมีอยู่ในอนาคตและ dba จะไม่สามารถทำได้
$ sudo systemctl start database@omgwowyetanotherawsesomeapp
อย่างไรก็ตามฉันคิดในแง่ของบรรจุภัณฑ์มากกว่าที่คิดกับระบบเฉพาะ
โปรดทราบว่าดังที่แสดงในคำตอบที่น่าอัศจรรย์สำหรับคำถามอื่นที่เกี่ยวข้องการใช้ sudo globs สำหรับสิ่งนี้ไม่ปลอดภัยในท้ายที่สุด:
%dba ALL = /usr/bin/systemctl start database@[a-z]* # UNSAFE!
อนุญาต
$ sudo systemctl start database@awsesomeapp unrelatedservice
ฉันสงสัยว่าใช้sudo
จะไม่แก้ปัญหาของฉัน (แม้ว่าฉันหวังว่าฉันผิด) มีวิธีอื่นใดที่อนุญาตให้ผู้ใช้ที่ไม่ใช่รูทควบคุมsystemd
บริการหรือไม่?
สำหรับสิ่งที่คุ้มค่าฉันต้องทำสิ่งนี้ในระบบ CentOS 7 และระบบ RHEL7 ในอนาคต ฉันจะสนใจโซลูชันที่ทำงานกับ Arch Linux ด้วย