ฉันจะดำเนินการรูทจากบัญชีที่ไม่ใช่รูทได้อย่างไร


15

ฉันต้องการที่จะสามารถเริ่มบริการจาก php-script ทำงานภายใต้บัญชีผู้ใช้ www

วิธีที่แนะนำในการดำเนินการเหล่านี้คืออะไร

ฉันเริ่มใหม่ได้ฉันสามารถวางไฟล์ด้วยคำสั่ง que'd อ่านโดย CRON แต่แก้ปัญหาได้

สิ่งที่ฉันคิดคือบริการเล็ก ๆ ที่ทำงานภายใต้รูทอนุญาตให้ "วิธีการ" ที่กำหนดไว้ล่วงหน้าเพื่อให้การกระทำของรูทไม่สามารถทำได้

มีเครื่องมืออะไรบ้างในเรื่องนี้?


@MadHatter, Mona Lisa ส่งคำทักทายของเธอ, ;-)
user65297

คำตอบ:


27

คุณสามารถบูรณาการล้อ แต่จริง ๆ แล้วฉันใช้รหัสผ่าน sudo สำหรับเรื่องนี้ ตัวอย่างเช่นระบบการตรวจสอบของฉันต้องสามารถเรียกใช้คำสั่งเพื่อตรวจสอบฮาร์ดแวร์ RAID สิ่งนี้ต้องการสิทธิ์รูท แต่ฉันไม่ต้องการรันทั้งระบบการตรวจสอบในฐานะรูทดังนั้นฉันจึงsudoersมีบรรทัดที่ระบุว่า

nagios  ALL=(root) NOPASSWD: /usr/lib/nagios/plugins/check_md_raid

จากนั้นเรียกใช้คำสั่งsudo /usr/lib/nagios/plugins/check_md_raidในฐานะผู้ใช้การตรวจสอบเมื่อฉันต้องการตรวจสอบ RAID

คุณสามารถมีสาย sudoers ที่กล่าวว่า

www-user    ALL=(root) NOPASSWD: /etc/rc.d/init.d/myservice

แล้วต้อง PHP sudo /etc/rc.d/init.d/myservice restartรัน


2
นี่คือวิธีที่จะไป IMO ฉันใช้กระบวนการนี้สำหรับงานที่คล้ายกัน มีการผลิตมานานกว่า 3 ปีแล้ว ไม่มีสิ่งใดที่เคยล้มเหลวและความเสี่ยงด้านความปลอดภัยนั้นแทบจะไม่มีอยู่ตราบใดที่คุณปกป้องโค้ด PHP ที่เรียกใช้มันอย่างถูกต้องด้วยตรรกะแอปพลิเคชันของคุณ
Andrew Ensley

1
ขอบคุณ sudoers ใหม่สำหรับฉันและปังเป้าหมาย @Andrew ขอขอบคุณสำหรับข้อมูลเพิ่มเติม
user65297

1
user65927 ยกโทษให้ฉันถ้านี่ไม่ใช่ข่าวสำหรับคุณ แต่มารยาทในท้องถิ่นคือเมื่อคุณมีคำตอบที่น่าพอใจสำหรับคำถามที่คุณยอมรับโดยคลิกที่กรอบเห็บถัดจากมัน
MadHatter

1
คุณอาจต้องใส่เครื่องหมายบรรทัด "Defaults requiretty" ในไฟล์ sudoers ของคุณ ขั้นตอนนี้ทำให้ฉันไม่กี่ครั้ง (เช่นเปลี่ยน "ค่าเริ่มต้น requiretty" เป็น "#Defaults requiretty")
steve.lippert

6

ลองดูที่sudo : อนุญาตให้ระบุการกระทำที่สามารถดำเนินการในฐานะผู้ใช้รายอื่น (รูทในกรณีของคุณ)

ตัวอย่างเช่นคุณสามารถเพิ่มลงในของคุณ/etc/sudoers(อย่าแก้ไขไฟล์ใช้โดยตรงvisudo)

www-user-account ALL= NOPASSWD: /usr/bin/mypredefinedaction

ดูman sudoรายละเอียดและไวยากรณ์ของไฟล์


2
ระวังให้มากเมื่อคุณแก้ไข/etc/sudoersไฟล์ หากมันไม่ถูกต้องในทาง syntactically การเปลี่ยนกลับเป็นฝันร้าย b / c ที่คุณต้องการsudoกลับเข้าไป แต่คุณไม่สามารถ b / c คุณเพิ่งกำจัด sudo คุณต้องใช้ซีดีช่วยเหลือ / ดีวีดีและติดตั้งพาร์ติชันด้วยตนเอง
puk

1
@puk ที่จริงการแก้ไข shudders คุณจำเป็นต้องเข้าถึง root และในกรณีที่ไฟล์เสียหายคุณสามารถเข้าสู่ระบบในฐานะ root แล้วเรียกคืน (จากสำเนาสำรอง) หรือแก้ไขด้วยตนเอง visudo ยังทำการตรวจสอบสติในไฟล์ก่อนที่จะเขียน
Matteo

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