एक SSH उपयोगकर्ता बनाने के लिए जिनके पास केवल विशिष्ट फ़ोल्डर तक पहुंचने की अनुमति है


47

मैंने एसएसएच स्थापित किया, लेकिन मैंने पाया कि अगर मैं उबंटू में प्रवेश करने के लिए अपने मूल खाते का उपयोग करता हूं, तो इसके पास बहुत अधिक अनुमतियां हैं।

मैं उपयोगकर्ता को केवल उबंटू में विशिष्ट फ़ोल्डरों के लिए अनुमति देना चाहता हूं। मैं ऐसे उपयोगकर्ता को कैसे कॉन्फ़िगर कर सकता हूं?

जवाबों:


49

यह सरल है। बस अपने होम डायरेक्टरी के साथ एक नया उपयोगकर्ता बनाएं जिसकी आपको आवश्यकता है उसे एक्सेस करने के लिए (यह कमांड के तहत sudoया रूट शेल में चलाया जाना चाहिए ):

adduser --home /restricted/directory restricted_user

यह एक उपयोगकर्ता बनाएगा restricted_user, निर्देशिका /restricted/directoryऔर फिर निर्देशिका पर अनुमतियाँ सेट की जाएगी ताकि उपयोगकर्ता इसे लिख सके। यह डिफ़ॉल्ट रूप से किसी अन्य निर्देशिका में लिखने की क्षमता नहीं होगी।

यदि आपके पास पहले से निर्देशिका है, तो आप adduserएक --no-create-homeविकल्प के साथ कमांड चला सकते हैं और अनुमतियों को मैन्युअल रूप से सेट कर सकते हैं (रूट विशेषाधिकारों के साथ), जैसे:

chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory

यदि आपको इस उपयोगकर्ता के लिए भी विश्व-योग्य निर्देशिकाओं को अस्वीकार्य बनाने की आवश्यकता है, तो दो संस्करण हैं।

1) यदि आप उपयोगकर्ता को एक इंटरैक्टिव शैल सत्र प्रदान करना चाहते हैं, तो चेरोट जेल (अपने में ) बनाने पर इस मैनुअल का पालन करने पर विचार करें /restricted/directory

उसके बाद, निम्नलिखित को अपने में जोड़ें sshd_config:

Match user restricted_user
  ChrootDirectory /restricted/directory

2) यदि आपको केवल कनेक्शन के समापन बिंदु और आपके मेजबान के बीच फ़ाइलों की प्रतिलिपि बनाने के लिए उसकी आवश्यकता है, तो सब कुछ बहुत आसान है। अपने अंत में इन पंक्तियों को जोड़ें sshd_config:

Match user restricted_user
  ForceCommand internal-sftp
  ChrootDirectory /restricted/directory

Subsystem       sftp    internal-sftp

फिर शुरू में Subsystem sftp /usr/lib/openssh/sftp-serverहैश ( #) चिन्ह लगाकर टिप्पणी करें।

अपने SSH सर्वर को फिर से शुरू करने के बाद (यह इंटरएक्टिव सत्रों को पुनरारंभ करने पर नहीं मारता है, इसलिए यह सुरक्षित है भले ही आपने कुछ गलत किया हो; साथ ही, आपने अपने रनिंग सत्र को बंद नहीं किया है इससे पहले कि आपने अभी भी लॉग इन करने में सक्षम हैं), सब कुछ काम करना चाहिए जैसा सोचा वैसा।


1
मैंने कोशिश की, लेकिन ऐसा लगता है कि मैं अभी भी सीडी कर सकता हूं .. और ऊपरी निर्देशिका को ब्राउज़ कर सकता हूं। और जब मैं ऊपरी निर्देशिका में vi। axt का उपयोग करता हूं, यह दिखाता है: जारी रखने के लिए एंटर या कमांड दबाएं, और मैं vi
मूर्ख

1
क्या मैं विकल्प # 2 का उपयोग कर सकता हूं यदि उपयोगकर्ता के पास केवल sshfs की पहुंच होनी चाहिए?
झिलमिलाहट

1
सब कुछ ठीक काम करता है, सिवाय इसके कि मेरे पास कोई लिखित अनुमति नहीं है। मैं इस प्रतिबंधित निर्देशिका के लिए लिखित अनुमति कैसे दे सकता हूं। अगर मैं chmod 775 का उपयोग करता हूं, तो उपयोगकर्ता अब लॉगिन नहीं कर सकता है।
मेरा नाम-

3
आपको ब्लॉक के Subsystem sftp internal-sftpऊपर अपने दूसरे उदाहरण में लाइन लिखना चाहिए Match। अन्यथा ssh एक त्रुटि का प्रिंट आउट करेगा और प्रारंभ नहीं करेगा।
टिक ०

1
स्पॉइलर अलर्ट: एससीपी के साथ काम नहीं करता है
साइकिल

5

प्रतिबंधित उपयोगकर्ता बनाने का सबसे आसान तरीका जो दिए गए निर्देशिका (जैसे ऊपरी निर्देशिका आदि) से भटक नहीं सकता है, और उपयोग करने के लिए एक सीमित / उठाया सेट है, एक प्रतिबंधित शेल का उपयोग करना है। संदर्भ:

http://man.he.net/man1/rbash

सबसे पहले, एक सह्लिइन rbash( जिसे रूट उपयोक्ता के रूप में चलाएं) बनाएं ।

ln -s /bin/bash /bin/rbash

तो बस इस प्रतिबंधित शेल के साथ एक सामान्य उपयोगकर्ता बनाएँ, और यह वांछित फ़ोल्डर के लिए घर dir सेट है:

useradd -s /bin/rbash -d /home/restricted_folder username

प्रतिबंधित शेल के बिना भी, यदि आप स्पष्ट रूप से इस उपयोगकर्ता को sudoer की सूची, या किसी विशेष समूह में नहीं जोड़ते हैं, तो यह डिफ़ॉल्ट रूप से सीमित होगा।

प्रतिबंधित शेल के साथ, निम्नलिखित अस्वीकृत या निष्पादित नहीं किए गए हैं:

  • सीडी के साथ निर्देशिका बदल रहा है

  • SHELL, PATH, ENV, या BASH_ENV के मानों को सेट या अनसेट करना

  • निर्दिष्ट कमांड नाम जिसमें /

  • / के लिए एक तर्क के रूप में एक फ़ाइल नाम निर्दिष्ट करना। अंतर्निहित आदेश

  • हैश बिल्डिन कमांड के लिए -p विकल्प के तर्क के रूप में एक स्लैश युक्त फ़ाइल नाम निर्दिष्ट करना

  • स्टार्टअप पर शेल वातावरण से फ़ंक्शन परिभाषाएँ आयात करना

  • स्टार्टअप पर शेल वातावरण से SHELLOPTS का मूल्य पार्स करना

  • >,> |, <>,> &, &, और >> पुनर्निर्देशन-आयन ऑपरेटरों का उपयोग करके आउटपुट को पुनर्निर्देशित करना

  • शेल को बदलने के लिए निष्पादित बिल्टिन कमांड का उपयोग करके दूसरे कमांड के साथ

  • अंतर्निहित कमांड को सक्षम करने के लिए -f और -d विकल्पों के साथ अंतर्निहित कमांड जोड़ना या हटाना

  • अक्षम शेल बिल्डिंस को सक्षम करने के लिए सक्षम बिलिन कमांड का उपयोग करना

  • कमांड बिलिन कमांड में -p विकल्प निर्दिष्ट करना

  • सेट + आर या सेट + ओ प्रतिबंधित के साथ प्रतिबंधित मोड को बंद करना।

ये प्रतिबंध किसी भी स्टार्टअप फाइलों के बाद लागू किए जाते हैं

इसके अलावा / वैकल्पिक रूप से, उपयोगकर्ता को उपयोग करने के लिए एक सीमित / चुने हुए सेट तक सीमित करने के लिए, आप केवल उस उपयोगकर्ता के लिए .bash_profile रीड-ओनली बना सकते हैं,

PATH=$HOME/bin

और सिमिलर जो कुछ भी आज्ञा आप उस उपयोगकर्ता को ~ / बिन फ़ोल्डर में देता है:

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

आदि।

HTH


मैं फाइल सिस्टम पर / रूट डायरेक्टरी सहित कोई भी फाइल ढूंढ सकता हूं और मैं इन फाइलों को पढ़ सकता हूं। आश्चर्य है कि उपयोगकर्ता फ़ोल्डर के बाहर कुछ भी देखने या किसी भी नेटवर्क पैकेट या पढ़ने / var / लॉग सामग्री पर कब्जा करने के तरीके को कैसे प्रतिबंधित करें
16851556
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.