ฉันจะเริ่มงานในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษใน Upstart ได้อย่างไร


14

ฉันใช้เวอร์ชั่นพุ่งพรวดล่าสุดสำหรับ Ubuntu 10.4 LTS พุ่งพรวดถูกเปิดตัวด้วย --debug เคอร์เนลธง

ฉันกำลังกำหนดค่างานที่กำหนดเองสำหรับ nzbget daemon โดยทั่วไปงานนี้มีสคริปต์ก่อนเริ่มทำงานซึ่งประกอบเข้ากับระบบไฟล์ซึ่งเป็นสคริปต์โพสต์สตาร์ทที่ unmount ระบบไฟล์และexec nzbget -Dบรรทัด

ปัญหาคือ nzbget daemon จำเป็นต้องรันในฐานะผู้ใช้ที่ไม่ได้รับสิทธิพิเศษ คุณลักษณะนี้รวมอยู่ใน nzbget แล้ว แน่นอนเมื่อฉันเรียกใช้จากคอนโซลsudo nzbget -Dกระบวนการทำงานในฐานะผู้ใช้ที่ไม่มีสิทธิ์ แต่เมื่อฉันเริ่มงานพุ่งพรวดด้วยexec nzbget -Dบรรทัดกระบวนการ nzbget -D จะทำงานในฐานะรูท ดังที่ได้กล่าวไว้ในตำราอาหารพุ่งพรวดฉันพยายามใช้ผู้ใช้ su -c "nzbget -D" และเริ่มต้น -demon-daemon แต่สำหรับคำสั่งทั้งสองเนื่องจากการพุ่งพรวดติดตาม PID ผิดฉันคิดว่ามันเป็นกระบวนการหลักที่ถูกฆ่า (เนื่องจากบันทึกการพุ่งพรวด) ในตอนท้ายของกระบวนการเริ่มต้นดังนั้นจึงเปิดตัวสคริปต์หลังกระบวนการที่ฉันไม่ต้องการ

=> ฉันจะทำอย่างไรให้ถูกต้อง? มันเป็นอย่างไรที่exec nzbget -Dคำสั่ง upstart ทำให้กระบวนการทำงานในฐานะ root ในขณะที่sudo nzbget -Dคำสั่งทำให้มันทำงานในฐานะผู้ใช้ที่ไม่ได้รับสิทธิพิเศษ

คำตอบ:


12

มีความคืบหน้าในการเปิดตัวเวอร์ชั่น 1.4:

ใหม่ stanzas“ setuid” และ“ setgid” เพื่ออนุญาตให้งานระบบรันภายใต้ uid / gid ที่ระบุซึ่งสอดคล้องกับชื่อ / กลุ่มที่กำหนด

คุณสามารถคว้าได้จากหน้า LaunchPad ของพวกเขาแต่ (แปลก) ฉันไม่เห็น PPA ดังนั้นคุณอาจต้องรวบรวมด้วยตัวคุณเอง

มิฉะนั้นให้ใช้suหรือsudoในคำสั่ง exec ของคุณเช่น:

su -c "<commands>" <username>
sudo -u <username> <commands>

พวกเขาทั้งคู่ทำสิ่งเดียวกันเพื่อเลือกสิ่งที่คุณมีความสุขที่สุด ดังนั้นการใช้คำสั่งตัวอย่างของคุณ:

exec sudo -u me "nzbget -D"

ชื่อโดเมน upstart.at เป็น undead
ศ. Falken ผิดสัญญาละเมิด

ขอบคุณสำหรับสิ่งนี้! ไม่ชัดเจนสำหรับฉันในเอกสารพุ่งพรวดหากฉันควรจะใช้ Session Init / งาน ฯลฯ
Luke Hoersten

4

ฉันขอแนะนำให้ใช้ sudo ด้วยไวยากรณ์ต่อไปนี้:

sudo -u foouser foocommand

สิ่งนี้จะรันคำสั่ง foocommand ในฐานะผู้ใช้ foouser

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