जवाबों:
यह सरल है। बस अपने होम डायरेक्टरी के साथ एक नया उपयोगकर्ता बनाएं जिसकी आपको आवश्यकता है उसे एक्सेस करने के लिए (यह कमांड के तहत 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 सर्वर को फिर से शुरू करने के बाद (यह इंटरएक्टिव सत्रों को पुनरारंभ करने पर नहीं मारता है, इसलिए यह सुरक्षित है भले ही आपने कुछ गलत किया हो; साथ ही, आपने अपने रनिंग सत्र को बंद नहीं किया है इससे पहले कि आपने अभी भी लॉग इन करने में सक्षम हैं), सब कुछ काम करना चाहिए जैसा सोचा वैसा।
Subsystem sftp internal-sftp
ऊपर अपने दूसरे उदाहरण में लाइन लिखना चाहिए Match
। अन्यथा ssh एक त्रुटि का प्रिंट आउट करेगा और प्रारंभ नहीं करेगा।
प्रतिबंधित उपयोगकर्ता बनाने का सबसे आसान तरीका जो दिए गए निर्देशिका (जैसे ऊपरी निर्देशिका आदि) से भटक नहीं सकता है, और उपयोग करने के लिए एक सीमित / उठाया सेट है, एक प्रतिबंधित शेल का उपयोग करना है। संदर्भ:
सबसे पहले, एक सह्लिइन 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