Bagaimana saya memulai pekerjaan sebagai pengguna yang tidak memiliki hak istimewa di Pemula?

14

Saya menggunakan versi pemula baru untuk ubuntu 10.4 LTS. pemula diluncurkan dengan flag kernel --debug.

Saya sedang membuat konfigurasi pekerjaan khusus untuk daemon nzbget. Pada dasarnya, pekerjaan ini memiliki skrip pra-mulai yang me-mount sistem file, skrip pasca-mulai yang melepas sistem file dan sebuah exec nzbget -Dbaris.

Masalahnya adalah bahwa daemon nzbget perlu dijalankan sebagai pengguna yang tidak ditentukan. Fitur ini sudah termasuk dalam nzbget. Memang, ketika saya menjalankan dari konsol sudo nzbget -Dproses berjalan sebagai pengguna yang tidak istimewa. Tetapi ketika saya memulai pekerjaan pemula dengan exec nzbget -Dbaris, proses nzbget -D berjalan sebagai root. Seperti yang dikatakan di buku masak pemula, saya mencoba menggunakan pengguna su -c "nzbget -D" dan juga start-stop-daemon baik tanpa bait harapan seperti yang disarankan. Tetapi untuk kedua perintah, seperti pemula melacak PID yang salah saya kira, ia melihat proses utama sebagai mati (karena pemula log) pada akhir proses mulai dan dengan demikian, ia meluncurkan skrip post-proses yang tidak saya inginkan.

=> Bagaimana saya bisa melakukannya dengan benar? Bagaimana exec nzbget -Dperintah pemula membuat proses dijalankan sebagai root sedangkan sudo nzbget -Dperintah membuatnya berjalan sebagai pengguna yang tidak ditentukan?

ashe
sumber

Jawaban:

12

Ada beberapa kemajuan dengan merilis versi 1.4 .:

Bait “setuid” dan “setgid” baru untuk memungkinkan pekerjaan sistem dijalankan di bawah uid / gid yang ditentukan sesuai dengan nama / grup yang diberikan.

Anda dapat mengambilnya dari halaman LaunchPad mereka tetapi (anehnya) saya tidak dapat melihat PPA sehingga Anda mungkin harus mengkompilasinya sendiri.

Kalau tidak, gunakan suatau sudodalam perintah exec Anda seperti:

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

Mereka berdua melakukan hal yang hampir sama, jadi pilih yang mana yang paling Anda sukai. Jadi gunakan perintah contoh Anda:

exec sudo -u me "nzbget -D"
Oli
sumber
nama domain upstart.at adalah undead
Prof. Falken mendukung Monica
Terima kasih untuk ini! Tidak jelas bagi saya dalam dokumen pemula jika saya harus menggunakan Sesi Init / Pekerjaan dll.
Luke Hoersten
4

Saya sarankan menggunakan sudo dengan sintaks berikut:

sudo -u foouser foocommand

ini menjalankan perintah foocommand sebagai foouser pengguna.

Michael K.
sumber