Komut dosyasını rc.local'dan root yerine user olarak yürütün


26

Sunucum her başlatıldığında bir betik çalıştırmak istiyorum. Sorun şu ki, betiği çalıştırmak için belirli bir kullanıcı olmam gerekiyor, kök olarak yapmaya çalışırsam, belli paketleri (yakut gibi) bulamıyorum.

Xxx kullanıcısı01 olarak değiştirmeye çalışıyorum.

sudo su user01
/etc/init.d/script start

Ancak bu işe yaramıyor.


Init betiğini yayınla?
30.06.2012

Günlüklerin var mı?
Dom,

Neden sadece surc betiğinde kullanmıyorsun ?
Mat

Yanıtlar:


30

sudo su user01Bir komut dosyasında çalıştırmak , aşağıdaki komutların sonuç kabuğuna gönderildiği anlamına gelmez. Aslında, bu muhtemelen hiç çıkmayan, kullanıcı01 olarak yeni bir kabuğun doğduğu anlamına gelir!

İki şey:

  • Bir komutu başka bir kullanıcı olarak ya -c 'command...'argümanı su, like 'a ileterek çalıştırabilirsiniz su user01 -c '/etc/init.d/script start'.
  • /Etc/init.d kullanan bir hizmeti rc.local'den başlatmak doğru bir şey değil. Hizmetin başlangıçta chkconfigveya gibi dağıtım araçlarını kullanarak etkinliğini sağlamak istiyorsun update-rc.d. Ayrıca /etc/init.d adresindeki işleri başlatmamalısınız root. İşlerin kendileri başka bir kullanıcı hesabını doldurmakta özgür hissedebilir, ancak kök tarafından çağrılmalıdır.


4

Sadece sudo aracılığıyla komutu çalıştırabilirsiniz:

sudo -H -u user01 /etc/init.d/script start

-H HOME ortam değişkenini kullanıcınınkine ayarlar.

-u, çalıştırılacak kullanıcı adını belirtir.


0

Elbette, bu senaryo sudo ile sudo ile çalıştırılamaz (çünkü zorla girilmiş olan kullanıcılar) sudo'larda. Devre dışı bırakmak isteyebilirsiniz, ki bu biraz riskli

Ayrıca runsuid adında eski bir araç var: http://freecode.com/projects/runsuid

HTH

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.