पटो को सूडो से गुजरते हुए


13

संक्षेप में : कैसे बनाने के लिए सुडोकू हर बार PATH फ्लश न करें?

रूबी के साथ रूल्स पर लिखे गए मेरे सर्वर (डेबियन टेस्टिंग) पर मेरी कुछ वेबसाइटें हैं। मैं उन्हें होस्ट करने के लिए मोंगरेल + नेग्नेक्स का उपयोग करता हूं, लेकिन एक समस्या है जो तब आती है जब मुझे मोंगरेल को पुनरारंभ करने की आवश्यकता होती है (जैसे कि कुछ बदलाव करने के बाद)।

सभी साइटें VCS (git, लेकिन यह महत्वपूर्ण नहीं है) में चेक की गई हैं और मेरे उपयोगकर्ता के लिए स्वामी और समूह सेट है, जबकि Mongrel, huh, mongrel उपयोगकर्ता के अंतर्गत चलता है, जो इसके अधिकारों में गंभीर रूप से प्रतिबंधित है। तो मोंगरेल को रूट के तहत शुरू किया जाना चाहिए (यह स्वचालित रूप से यूआईडी बदल सकता है) या मोंगरेल।

Mongrel को प्रबंधित करने के लिए मैं mongrel_cluster मणि का उपयोग करता हूं क्योंकि यह केवल एक कमांड के साथ Mongrel सर्वर की किसी भी राशि को शुरू करने या रोकने की अनुमति देता है। लेकिन इसे PATH में होने के लिए निर्देशिका /var/lib/gems/1.8/bin की आवश्यकता है: यह इसे पूर्ण पथ से शुरू करने के लिए पर्याप्त नहीं है

PATH को रूट में संशोधित करते हुए .bashrc ने कुछ भी नहीं बदला, sudo के env_reset और env_keep को ट्वीक किया।

तो सवाल: कैसे PATH के लिए एक निर्देशिका जोड़ने के लिए या sudo में उपयोगकर्ता के पेट को रखने के लिए?

अपडेट: कुछ उदाहरण

$ env | grep PATH
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/var/lib/gems/1.8/bin
$ sudo cat /etc/sudoers | egrep -v '^$|^#'
Defaults    env_keep = "PATH"
root    ALL=(ALL) ALL
%sudo ALL=NOPASSWD: ALL
$ sudo env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

मैं यह भी कह सकता हूं कि यह डेबियन स्टेबल (लेनी) में भी ठीक इसी तरह काम करता है।


जवाबों:


12

कुछ घंटों तक उसी समस्या से जूझते रहे। डेबियन लेन में, आप इसे जोड़कर ठीक कर सकते हैं

Defaults        exempt_group=<your group> 

sudoers फ़ाइल के लिए।

यह संकलित - सुरक्षित-पथ विकल्प के चारों ओर जाने का एकमात्र तरीका है, (जहाँ तक मुझे पता है)।

विशेष रूप से, यह उपयोगकर्ताओं को अपने पासवर्ड दर्ज करने की आवश्यकता से भी छूट देगा जब वे sudo करते हैं।


3

यदि आपने secure_pathसेट किया है /etc/sudoers, तो आप env_reset/ env_keepआप की तरह सभी के साथ खेल सकते हैं और इससे मार्ग पर कोई फर्क नहीं पड़ेगा। अगर आपको ऐसा कुछ दिखाई देता है, तो टिप्पणी करें।

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

नहीं, बेशक यह सेट नहीं था।
whitequark

0

मैं कहता हूँ कि आदमी sudo में env_reset और env_keep विकल्प देखें । लेकिन ऐसा लगता है कि आप पहले से ही ऐसा कर चुके हैं (आप बस गलती से env_keep "keepenv" कहते हैं)। यदि आप env_reset विकल्प को अक्षम करते हैं (डिफ़ॉल्ट सक्षम है), मुझे लगता है कि यह किसी भी env चर को मिटाना नहीं है। लेकिन यह कम सुरक्षित है।

Sudo के लिए एक safe_path विकल्प भी है; मुझे लगता है कि यह डिफ़ॉल्ट रूप से सक्षम है। आप इसे अक्षम करने का प्रयास कर सकते हैं।

पूर्ववर्ती विकल्प आपकी / etc / sudoers फ़ाइल में सेट किए गए हैं। -iSudo के लिए कमांड-लाइन विकल्प भी है । जो sudo को /root/.profile या /root/.login को चलाने का कारण बनेगा। आप वहां अपना इच्छित रास्ता तय कर सकते हैं।


1
नहीं, जब env_reset को बंद कर दिया जाता है तब भी यह बदल जाता है (मिटता नहीं) PATH। संभवतः यह / * / sbin dirs जोड़ने के लिए किया जाता है। नहीं, -i विकल्प उपयुक्त नहीं है क्योंकि यह एक इंटरैक्टिव शेल शुरू करता है, और मुझे केवल एक कमांड चलाने की आवश्यकता है।
श्वेतार्क

ठीक है, डेबियन को पुनः स्थापित करने के बाद समस्या गायब हो गई (एलवीएम की ओर पलायन के कारण) और रूबीजीम्स भी; आपका उत्तर सबसे उपयोगी था इसलिए इसे अब स्वीकार किया जा सकता है।
व्हाइटवार्क

-1

ठीक है, तुम कुछ गलत कर रहे हो। इसके अलावा, आपने निर्दिष्ट नहीं किया कि आपने अपने / etc / sudoers फ़ाइल के साथ क्या किया है। यहाँ आपको क्या करना चाहिए था - यह एक CentOS सिस्टम है, BTW:

सबसे पहले, यह सही env_keep सेटिंग के साथ है (ध्यान दें कि PATH इसमें है):

sudo ग्रेप -5 पथ / etc / sudoers चूक env_keep = "रंगों को प्रदर्शित HOSTNAME HISTSIZE INPUTRC KDEDIR \ LS_COLORS मेल PS1 PS2 QTDIR USERNAME \ LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \ LC_PAPER LC_TELEPHONE LC_TIME LC_ALL भाषा LINGUAS \ _XKB_CHARSET XAUTHORITY पथ"

Defaults   timestamp_timeout = 15 

## Next comes the main part: which users can run what software on 
## which machines (the sudoers file can be shared between multiple

-> export PATH=$PATH:hithere
-> sudo sh -c 'echo $PATH'
/sbin:/bin:/usr/sbin:/usr/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/bin:hithere

अछा लगता है। अब env_keep सेटिंग को हटा दें और पुनः प्रयास करें:

-> sudo visudo
-> sudo grep -5 PATH /etc/sudoers
                    LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \
                    LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \
                    LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC \
                    LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \
                    _XKB_CHARSET XAUTHORITY"
 #_XKB_CHARSET XAUTHORITY PATH"

क्या दुख की बात है:

 -> sudo sh -c 'echo $PATH'
 /usr/bin:/bin

1
मैंने देखा कि दो बार से अधिक! पोस्ट में अद्यतन की जाँच करें।
श्वेतार्क

मेरे पास एक ही समस्या है, मेरे पास निश्चित रूप से आपके द्वारा
बताई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.