उपयोगकर्ता के रूप में लॉगिन और रूट के माध्यम से su का उपयोग करने वाले उपयोगकर्ताओं के बीच अंतर क्या है?


17

जब आपके पास किसी प्रकार का सर्वर होता है, तो आप इसके माध्यम से एक्सेस कर सकते हैं, जैसे, ssh user1@ipऔर आप ssh root@ipअपने मूल उपयोगकर्ता के साथ su prive कॉलेज में जा सकते हैं और फिर जा सकते हैं su user1। मेरी सोच में उन दोनों तरीकों से मुझे एक ही उपयोगकर्ता वातावरण (इस मामले में, "user1") में ले जाना चाहिए, लेकिन मेरे वास्तविक अनुभव में ऐसा नहीं होता है, क्योंकि ssh user1@ipवहाँ चीजें स्थापित su user1नहीं हैं।

ऐसा क्यों है?

जवाबों:


15

SSH एक लॉगिन शेल शुरू करता है। su, डिफ़ॉल्ट रूप से नहीं है।

विशेष रूप से, इसका मतलब है कि ~/.profileउस उपयोगकर्ता के लिए (या समान फ़ाइल) खट्टा नहीं है। इसलिए इसमें किए गए बदलाव ~/.profileप्रभावी नहीं होंगे। यह भी मामला हो सकता है कि:

  • यहां तक ​​कि अगर आप एक लॉगिन शेल शुरू करते हैं, तो रूट में विभिन्न बदलाव किए गए हैं ~/.profile, जो उपयोगकर्ता के पर्यावरण को प्रदूषित कर सकते हैं।
    • /etc/profileऔर /etc/profile.d/*अलग-अलग उपयोगकर्ताओं के लिए अलग-अलग सेटिंग्स लागू कर सकते हैं (डिफ़ॉल्ट रूप से नहीं, हालांकि)
  • SSH कॉन्फ़िगरेशन में विभिन्न उपयोगकर्ताओं के लिए अलग-अलग सेटिंग्स हो सकती हैं।
  • PAM कॉन्फ़िगरेशन अलग है। उदाहरण के लिए, /etc/pam.d/sshहै:

    session    required     pam_env.so user_readenv=1 envfile=/etc/default/locale
    

    जबकि /etc/pam.d/suहै:

    session       required   pam_env.so readenv=1 envfile=/etc/default/locale
    

    इसका मतलब है SSH लोड ~/.pam_environment, लेकिन suनहीं है। यह एक बड़ा एक है, क्योंकि ~/.pam_environmentपर्यावरण चर के लिए शेल-स्वतंत्र स्थान है, और यह तब लागू होता है जब आप GUI, TTY या SSH से लॉगिन करते हैं।

लॉगिन शेल शुरू करने के लिए, निम्न में से कोई एक चलाएं:

su - <username>
sudo -iu <username>

उदाहरण:

# su muru -c 'sh -c "echo $HOME $PATH"'
/home/muru /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
# su - muru -c 'sh -c "echo $HOME $PATH"'
/home/muru /home/muru/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
# sudo -iu muru sh -c 'echo $HOME $PATH'
/home/muru /home/muru/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# sudo -u muru sh -c 'echo $HOME $PATH'
/root /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# ssh muru@localhost 'echo $HOME $PATH'
/home/muru /home/muru/devel/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

SSH के साथ भी, यदि आप एक शेल शुरू करने के बजाय एक कमांड चलाते हैं, तो एक लॉगिन शेल नहीं चलाया जाएगा ( ~/binSSH टेस्ट में अनुपस्थिति पर ध्यान दें , जो वर्तमान में है ) su -और sudo -i। सही परिणाम प्राप्त करने के लिए, मैं अपने शेल को लॉगिन शेल के रूप में चलाऊंगा:

# ssh muru@localhost '$SHELL -ilc "echo \$HOME \$PATH"'
/home/muru /home/muru/bin:/home/muru/devel/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

यह भी क्यों sudo suऔर sudo -sजड़ खोल पाने के भद्दे तरीके हैं। इन दोनों तरीकों से पर्यावरण प्रदूषित होता है।


सम्बंधित:


2
लगता है कि मुझे सवालों पर लेने से पहले जाग जाना चाहिए :) आपका जवाब अद्भुत है और मेरा उचित उत्तर को लक्षित करने से चूक गया। अच्छी तरह से किया +1
वीडियोनौथ

-1

मुख्य रूप से यह एक रणनीतिक अंतर है।

यदि आप एक सुपर उपयोगकर्ता के रूप में लॉग इन हैं, तो आप हर समय कुछ भी बदल सकते हैं ... - - भयावह गलतियों के खिलाफ कोई सुरक्षा नहीं है, आपको सुरक्षा के लिए अस्थायी रूप से किसी अन्य उपयोगकर्ता को बदलना होगा।

जबकि: यदि आप सीमित विशेषाधिकारों के साथ लॉग इन करते हैं, तो आप कुछ भयावह गलतियों के जोखिम से बचते हैं, क्योंकि आपको जानबूझकर उस शक्ति तक अस्थायी पहुँच के लिए su रूट पर जाना पड़ता है, लेकिन अब आपके पास सुरक्षित उपयोगकर्ता के लिए डिफ़ॉल्ट फ़ॉल-बैक पोज़िशन है ।

इसलिए अंतर वास्तव में रणनीतिक है, न कि तकनीकी।


सवाल अन्य उपयोगकर्ताओं से रूट उपयोगकर्ता के अंतर का बिल्कुल नहीं था। यह एक सर्वर उपयोगकर्ता को सीधे ssh के माध्यम से एक्सेस करने और रूट उपयोगकर्ता के अंदर su के माध्यम से इसे एक्सेस करने के बीच का अंतर था। वैसे भी, मैं सहमत हूं कि आपने क्या कहा था, धन्यवाद
मिगुएल कोर्टी

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