2010-06-28 9 views
10

Bir ([ba] sh) kabuk komut dosyasından çalıştırılan bir Java uygulamasına sahibim ve ne yazık ki bazen onu dağıtmaktan ve başlatmaya başlayan kişiler uygulamayı başlatmadan önce uygun kullanıcıya geçememektedir. Bu durumda uygulamanın en azında çalışmamasını ve ideal olarak bunun yapılmaması için bir uyarı vermesini istiyorum. Ben java taklit etmeye çalıştım ya da root için sahte bir java eklemek için yolu değiştirmeyi düşündüm, ama bu kabuk betiği java ikili yolunun tam yolunu belirttiğinden, bu istenmeyen yan etkilere ve etkili olmayacaktır. .Kök komut dosyasında, root olarak çalıştırılmamasını sağlamak için en kolay olanı nedir?

Yani, 'root'um olsam kaçma' için kabuk komut dosyalarında standart bir deyim var mı? bash

+0

Lütfen kabuğu belirtin ... BAŞAĞI kabuk, CMD kabuğu? –

+3

Üzgünüz, CMD kabuk betiklerini 'batch dosyaları' kadar çok kabuk betikleri olarak düşünmüyorum, bu yüzden ayırt etmemi sağladı. – Jherico

+2

bash'ın $ EUID'si var, ancak cristis'in aşağıda taşınabilir cevabı var. – msw

cevap

13

Örnek:

if [ `id -u` = 0 ]; then 
    echo "You are root, go away!" 
    exit 1 
fi 
1

BASH olarak, whoami çıktısını alıp root karşılaştırabilirsiniz.

1

Ben hizmet hesabı altında çalıştırılacak istediğiniz komut başında böyle bir şey kullanın: Doğru kullanıcı olarak çalıştırırsanız planlandığı gibi

LUSER='my-service' 
if [ `id -un` != $LUSER ]; then 
    exec su $LUSER -s $SHELL -c "$0 [email protected]" 
fi 

# actual script commands here. 

, yürütme devam edecektir. Kök olarak çalıştırırsanız, ayrıcalıklar istenen kullanıcı kimliğine bırakılır. Diğer kullanıcılar bir şey parola isteyecektir, onlara bir şey olduğunu yanlış anlatmalısınız.

su -s $SHELL ...

/etc/passwrd yılında kabuk setini geçersiz kılmak için kullanılır - bu hizmet hesabı için /bin/false ayarlanmış olabilir.

Bunu Debian sistemlerinde bash ve dash kullanarak kullandım. Taşınabilirlik geliştirilebilirse, yorum yapmak için 'u çekin.

+0

iyi, ben java uygulaması dağıtacak ve çalıştıracak belirli bir kullanıcı olduğunu düşünüyorum ... sadece kök değil, önemli. – cristis

+0

id -u, bir ad yerine bir sayı verir. Muhtemelen kimliği kastediyorsun. –

+0

Fred Nurk: İkinci bakışta, haklısın elbette, :-) – hillu