Yanıtlar:
initctl --version
Mevcut başlangıç sürümünüzü bulmak için.
Freenode üzerindeki #upstart kanalını sorarak, resmi meselenin üstlendiği:
Upstart’ın gelecekteki bir sürümü bunun için yerel destek, ancak şimdilik Gibi bir şey kullanabilirsiniz:
exec su -s /bin/sh -c 'exec "$0" "$@"' username -- /path/to/command [parameters...]
su
bu şu demek oluyor expect fork
ve hatta expect daemon
son PID'yi yakalamayın.
exec su -s /bin/sh -c 'HOME=/foo/bar exec "$0" "$@" &>/var/log/foobar.log' username -- /path/to/command [parameters...]
Start-stop-daemon kullanmaya ne dersiniz?
exec start-stop-daemon --start --chuid daemonuser --exec /bin/server_cmd
itibaren Başlangıç kitabı :
Debian ve Ubuntu sistemleri için önerilen yöntem yardımcı programı kullanmaktır.
start-stop-daemon
. [...]start-stop-daemon
PAM ("Takılabilir Kimlik Doğrulama Modülü") limitlerini başlattığı sürece uygulamaz.
Not: start-stop-daemon
RHEL'de desteklenmiyor.
Özellikle grup üyeliğiyle ilgili, biraz farklı anlamsallıklarla bunu yapmanın birkaç yolu var:
setuidgid
sizi belirttiğiniz gruba koyacaktır.
setuidgid
seni koyacağım sadece bu grupta, üye olduğunuz diğer gruplara ait dosyalara erişemezsiniz. setuidgid
daemontools-encore sitesinden ve setuidgid
nosh araç setinden ikisi de bir -s
(diğer adıyla. --supplementary
) sizi o gruba koyacak ve aynı zamanda sizi ek gruplar belirttiğiniz kullanıcı için. kullanma newgrp
Daha az ayrıcalıklı bir kullanıcı olduğunuzda, grubunuza tek bir grup ekler, ancak komut dosyalarının içinde kullanılmasını zorlaştıran yeni bir alt kabuk oluşturur.
start-stop-daemon
grup üyeliğinizi korur ve sadece setuid / setgid'den çok daha fazlasını yapar.
chpst -u username:group1:group2:group3... commandname
tam olarak hangi grup üyeliğini benimseyeceğinizi belirlemenize izin verecek, ancak Ubuntu ) sadece birlikte geliyor runit
alternatif olan paket upstart
.
su -c commandname username
tüm kullanıcı adının grup üyeliğini alır sudo -u username commandname
, bu yüzden muhtemelen en az şaşkınlığa giden yollardır.
kullanım setuidgid
paketten daemontools
.
Buradaki belgeler: http://cr.yp.to/daemontools/setuidgid.html
Amazon EC2'deki bir Ubuntu 10.10 örneğinde, start-stop-daemon
Komut.
Ben de diğer start-up bazıları ile mücadele kıta . Belirli bir python uygulamasını arıyorum virtualenv
ve benim yürütülen programa bazı parametreler.
Aşağıdaki benim için çalıştı.
script
export PYTHONPATH=.:/home/ubuntu/.local/lib/python2.7/site-packages/:/home/ubuntu/python/lib/python2.7/site-packages/
exec start-stop-daemon --start --chuid ubuntu --exec /home/ubuntu/python_envs/MyProj/bin/python /home/ubuntu/www/MyProj/MyProj.py -- --config-file-dir=/home/ubuntu/www/MyProj/config/ >> /home/ubuntu/startup.log 2>&1 &
end script
PYTHONPATH
Kaynaktan bazı paketlerin yüklü olması PYTHON Bu başlatma işi çalıştığında modül yolu. Her şeyi mutlak yollarda yapmak zorunda kaldım çünkü chdir
Stanza iş gibi görünmüyordu.
CentOS 6 kullanıyordum ve benim için çalışmak için önerilen hack'i (Upstart 0.6.5 için), ne de 'su' numarasını alamadım çünkü katılan çatalların sayısı (4 sanırım) takip edilmedi. 'veya' daemon bekleyin '.
Sonunda yaptım
chown user:group executable
chmod +s executable
(yani setuid bitini ayarlayın ve sahipliği değiştirin).
En güvenli yöntem olmayabilir, ancak dahili bir Ar-Ge projesi için bu bizim durumumuzda önemli değildi.
chmod 1700
veya en azından chmod u+sx,go-x
sadece yerine orada +s
, "yeterince güvenli" olarak nitelendirirdi. :)
Neyi başarmaya çalıştığınıza bağlı olarak üçüncü bir olasılık var. Mümkün olabilir Söz konusu dosyalar / cihazlardaki erişim kontrollerini gevşetin . Bu, ayrıcalıklı olmayan bir kullanıcının normalde izin vermeyeceği öğeleri bağlamasına veya erişmesine izin verebilir. Sadece süreçte krallığın anahtarlarını vermediğinizden emin olun.
Ayrıca sudo parola önbelleğinin zaman aşımını değiştir . Ancak, makineniz fiziksel olarak güvende olmadıkça tavsiye etmiyorum (yani, yoldan geçenlerin sudo erişimi kazanmaya çalışmasının mümkün olmadığına inanıyorsunuz).
Ayrıcalıklı eylemler gerçekleştirmenin çok az yolu olmasının ve gerçekleştirilmelerinin iyi bir nedeni var. gereksiz gerekli günlüğü. Gevşek kısıtlamalar sisteminiz için bir güvenlik tehlikesi oluşturacak ve kayıt tutmamanız tehlikeye girdiğinizde ne olduğunu bilmenin bir yolu olmadığı anlamına gelir.
Eğer boyut Günlük dosyalarınızdan biri endişe duyuyorsa, muhtemelen bir şeyler yanlış olabilir. Sudo normal şartlar altında kullanım başına sadece bir satır üretir.