क्या मैं एक SSH उपयोगकर्ता बना सकता हूँ जो केवल निश्चित निर्देशिका तक पहुँच सकता है?


45

मेरे पास एक वर्चुअल प्राइवेट सर्वर है जिसे मैं अपने रूट खाते के साथ एसएसएच का उपयोग करने के लिए कनेक्ट कर सकता हूं, किसी भी लिनक्स कमांड को निष्पादित करने में सक्षम होने और सभी डिस्क क्षेत्र तक पहुंचने के लिए, जाहिर है।

मैं एक अन्य उपयोगकर्ता खाता बनाना चाहूंगा, जो SSH का उपयोग करके भी इस सर्वर तक पहुंच बना सकेगा, लेकिन केवल एक निश्चित निर्देशिका के लिए, उदाहरण के लिए /var/www/example.com/

उदाहरण के लिए, कल्पना करें कि इस उपयोगकर्ता के पास एक बड़ी त्रुटि है। फाइल (500 एमबी) स्थित है /var/www/example.com/logs/error.log जब एफ़टीपी का उपयोग करते हुए इस फ़ाइल तक पहुंच है, इस उपयोगकर्ता को लॉग की अंतिम पंक्तियों को देखने के लिए 500 एमबी डाउनलोड करने की आवश्यकता है, लेकिन मैं उसे होना चाहता हूं कुछ इस तरह से निष्पादित करने में सक्षम:

tail error.log

इसलिए मुझे एसएसएच का उपयोग करके सर्वर तक पहुंचने में सक्षम होना चाहिए, लेकिन मैं उसे सभी सर्वर क्षेत्रों तक पहुंच प्रदान नहीं करना चाहता।

मैं यह कैसे कर सकता हूँ?

जवाबों:


29

chroot उपभोक्ता।


अपडेट करें:

TechRepublic लेख विन्सेंट Danen से कहते हैं:

ओपनएसएसएच 4.9 पी 1 के रिलीज के साथ, अब आपको उपयोगकर्ताओं को अपने घर निर्देशिकाओं तक सीमित करने या उन्हें SFTP सेवाओं तक पहुंच प्रदान करने के लिए तीसरे पक्ष के हैक या जटिल चेरोट सेटअप पर भरोसा नहीं करना होगा।

कुछ वितरण पर / etc / ssh / sshd_config (/ etc / sshd_config) संपादित करें और निम्नलिखित विकल्प सेट करें:

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

सुनिश्चित करें कि "मिलान" निर्देश फ़ाइल के अंत में है। यह ओपनएसएसएच को बताता है कि sftp समूह के सभी उपयोगकर्ताओं को उनके होम डायरेक्टरी (जो% h चेरोटडायरेक्टरी कमांड में% h का प्रतिनिधित्व करता है) को दिया जाना है।

किसी भी उपयोगकर्ता के लिए जिसे आप चुरोट करना चाहते हैं, उन्हें उपयोग करके sftp समूह में जोड़ें:

# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe

उपर्युक्त usermod कमांड sftp ग्रुप में यूजर जो को जोड़ेगा और उनके शेल को / bin / false पर सेट करेगा ताकि वे कभी भी शेल एक्सेस प्राप्त न कर सकें। चाउने और चामोड कमांड निर्देशिका के लिए आवश्यक अनुमतियाँ सेट करेंगे। इन अनुमतियों के सेट के साथ, उपयोगकर्ता को फ़ाइलों को अपलोड करने और डाउनलोड करने की अनुमति दी जाएगी, लेकिन रूट निर्देशिका में निर्देशिका या फ़ाइलें नहीं बना सकते हैं

चेरोटिंग शेल खाते थोड़े अधिक जटिल हैं क्योंकि इसके लिए आवश्यक है कि कुछ डिवाइस फाइलें और एक शेल उपयोगकर्ता के होम डायरेक्टरी में उपलब्ध हों। निम्न आदेशों में मांडिराव लिनक्स पर एक बहुत ही बुनियादी वर्ण व्यवस्था स्थापित होगी:

# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe

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


उबंटू समुदाय वेबसाइट का कहना है

चुरोट बनाना

  1. Dchroot और debootstrap पैकेज स्थापित करें।

  2. एक व्यवस्थापक के रूप में (अर्थात sudo का उपयोग करके), chroot के लिए एक नई निर्देशिका बनाएं। इस प्रक्रिया में, निर्देशिका /var/chrootका उपयोग किया जाएगा। ऐसा करने के लिए, sudo mkdir /var/chroot कमांड लाइन में टाइप करें ।

  3. एक व्यवस्थापक के रूप /etc/schroot/schroot.confमें, एक पाठ संपादक में खोलें । टाइप करें cd /etc/schroot, उसके बाद gksu gedit schroot.conf। यह आपको फ़ाइल को संपादित करने की अनुमति देगा।

  4. निम्नलिखित पंक्तियों को जोड़ें schroot.confऔर फिर फ़ाइल को सहेजें और बंद करें। your_usernameअपने उपयोगकर्ता नाम के साथ बदलें ।

    ]

एक टर्मिनल खोलें और टाइप करें:

sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ 
http://mirror.url.com/ubuntu/

यह चेरोट में उबंटू 10.04 (ल्यूसिड लिंक्स) का एक बुनियादी 'इंस्टॉलेशन' बनाएगा। संकुल को डाउनलोड होने में कुछ समय लग सकता है। नोट: आप अपनी पसंद के उबंटू संस्करण के साथ ल्यूसिड को बदल सकते हैं। नोट: आपको ऊपर mirror.url.comएक मान्य संग्रह दर्पण के URL के साथ स्थानीय परिवर्तन करना होगा । एक बुनियादी चुरोट अब बनाया जाना चाहिए था। sudo chroot /var/chroot चेरोट के अंदर एक रूट शेल में बदलने के लिए टाइप करें।

चेरोट सेट करना

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

नोट: इन कमांड को एक शेल में टाइप करें जो चेरोट के बाहर है।

/proc चिरोट में फाइल सिस्टम को माउंट करने के लिए निम्नलिखित टाइप करें (प्रबंध प्रक्रियाओं के लिए आवश्यक):

sudo mount -o bind /proc /var/chroot/proc  

Chroot के भीतर से DNS रिज़ॉल्यूशन की अनुमति देने के लिए निम्नलिखित टाइप करें (इंटरनेट एक्सेस के लिए आवश्यक):

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf 

बहुत ही कम पैकेज डिफ़ॉल्ट रूप से चेरोट में स्थापित किए जाते हैं (यहां तक ​​कि sudo स्थापित नहीं है)। apt-get install package_nameपैकेज स्थापित करने के लिए उपयोग करें ।


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