2010-06-28 6 views
10

मेरे पास एक जावा एप्लिकेशन है जो एक ([ba] sh) खोल स्क्रिप्ट से निष्पादित है और दुर्भाग्यवश कभी-कभी लोग इसे तैनात करने के लिए ज़िम्मेदार होते हैं और इसे शुरू करने से पहले उपयुक्त उपयोगकर्ता पर स्विच करने में विफल रहते हैं। इस स्थिति में मैं एप्लिकेशन को कम से कम चलाने के लिए नहीं चाहता हूं, और आदर्श रूप से चेतावनी जारी करता हूं कि ऐसा न करें। मैंने जावा को उपनाम करने या जड़ के पथ को बदलने के बारे में सोचा था, जिसमें नकली जावा शामिल है, लेकिन इसमें अवांछित साइड इफेक्ट्स हो सकते हैं और यह आसानी से प्रभावी नहीं होगा क्योंकि शैल स्क्रिप्ट जावा बाइनरी के लिए पूर्ण पथ निर्दिष्ट करती है ।यह सुनिश्चित करने के लिए एक शेल स्क्रिप्ट में सबसे आसान क्या है कि यह रूट के रूप में नहीं चल रहा है?

तो, यदि मैं रूट हूं तो 'रन न करें' के लिए खोल स्क्रिप्ट में मानक मुहावरे है? बैश में

+0

कृपया खोल इंगित करें ... बाश खोल, सीएमडी खोल? –

+3

क्षमा करें, मैं सीएमडी खोल स्क्रिप्ट के बारे में नहीं सोचता क्योंकि शैल स्क्रिप्ट्स 'बैच फाइल' के रूप में बहुत ज्यादा हैं, इसलिए यह मेरे लिए अलग-अलग होने के लिए नहीं हुआ। – Jherico

+2

बैश में '$ EUID' है लेकिन क्रिस्टिस के पास पोर्टेबल उत्तर है। – msw

उत्तर

13

उदाहरण:

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

मार में, आप whoami के उत्पादन लेने के लिए और root की तुलना कर सकते हैं।

1

मैं स्क्रिप्ट मैं एक सेवा खाते के अंतर्गत चलाए जा करना चाहते हैं कि की शुरुआत में कुछ इस तरह का उपयोग करें:

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

# actual script commands here. 

सही उपयोगकर्ता के रूप चलाते हैं, निष्पादन योजना के अनुसार जारी रहेगा। यदि रूट के रूप में चलाएं, तो वांछित उपयोगकर्ता-आईडी पर विशेषाधिकार हटा दिए जाते हैं। अन्य उपयोगकर्ता को एक पासवर्ड प्रॉम्प्ट मिलेगा जो उन्हें बताएगा कि कुछ गलत है।

su -s $SHELL .../etc/passwrd में खोल सेट ओवरराइड करने के लिए प्रयोग किया जाता है - यह सेवा खाते के लिए /bin/false लिए सेट किया जा सकता है।

मैंने bash और dash का उपयोग करके डेबियन सिस्टम पर इसका उपयोग किया है। अगर पोर्टेबिलिटी में सुधार किया जा सकता है तो टिप्पणी करने के लिए नि: शुल्क महसूस करें।

+0

अच्छी तरह से, मुझे लगता है कि कोई विशिष्ट उपयोगकर्ता नहीं है जो जावा ऐप को तैनात और चलाएगा ... यह महत्वपूर्ण है कि यह रूट नहीं है। – cristis

+0

id -u एक नाम के बजाय एक संख्या देता है। आप शायद id -un मतलब था। –

+0

फ्रेड नर्क: दूसरी नज़र में, आप सही हैं, निश्चित रूप से :-) – hillu

संबंधित मुद्दे

 संबंधित मुद्दे