Upstart'da ayrıcalıklı olmayan bir kullanıcı olarak işlere nasıl başlayabilirim?


14

Ubuntu 10.4 LTS için son başlatma sürümünü kullanıyorum. uptart --debug çekirdek bayrağıyla başlatılır.

Nzbget daemon için özel bir iş yapılandırması yapıyorum. Temel olarak, bu işin bir dosya sistemini bağlayan bir başlangıç ​​öncesi komut dosyası, dosya sisteminin bağlantısını kesen bir başlangıç ​​sonrası komut dosyası ve bir exec nzbget -Dsatırı vardır.

Sorun, nzbget arka plan programının ayrıcalıklı olmayan bir kullanıcı olarak çalışması gerektiğidir. Bu özellik nzbget'e zaten dahil edilmiştir. Gerçekten de, konsoldan çalıştırdığımda sudo nzbget -Dişlem ayrıcalıklı olmayan bir kullanıcı olarak çalışır. Ama exec nzbget -Dhat ile uptart iş başlatmak, nzbget -D işlemi kök olarak çalışır. Uptart yemek kitabında söylediğim gibi, su -c "nzbget -D" kullanıcı ve ayrıca tavsiye beklemek stanza olmadan start-stop-daemon kullanmaya çalıştım. Ancak her iki komut için, uptart sanırım yanlış PID'yi takip ettiğinden, ana işlemi başlatma işleminin sonunda öldürülen (uptart günlükleri nedeniyle) olarak görür ve böylece istemediğim işlem sonrası komut dosyasını başlatır.

=> Nasıl doğru yapabilirim? Nasıl ki exec nzbget -Dsonradan görme komut oysa kökü olarak işlem çalışmasını yapar sudo nzbget -Dkomut olmayan privilleged kullanıcı olarak çalışacak yapar?

Yanıtlar:


12

1.4 sürümünde bazı ilerlemeler kaydedildi.:

Sistem işlerinin verilen ad / gruba karşılık gelen belirtilen uid / gid altında çalışmasına izin vermek için yeni “setuid” ve “setgid” stanzları.

LaunchPad sayfalarından yakalayabilirsiniz, ancak (garip bir şekilde) bir PPA göremiyorum, bu yüzden kendiniz derlemeniz gerekebilir.

Aksi takdirde, exec komutunda suveya sudokomutunu şöyle kullanın:

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

İkisi de hemen hemen aynı şeyi yapıyor, bu yüzden en mutlu olduğunuz şeyi seçin. Örnek komutunuzu kullanarak:

exec sudo -u me "nzbget -D"

alan adı upstart.at ölümsüz
Prof. Falken sözleşmesi

Bunun için teşekkürler! Ben Oturum Init kullanarak gerekip gerekmediğini / vb İşler Sonradan görme docs bana Açık değil
Luke Hoersten

4

Ben aşağıdaki sözdizimi ile sudo kullanmanızı öneririz:

sudo -u foouser foocommand

bu, kullanıcı foouser olarak foocommand komutunu çalıştırır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.