दस्तावेज़
कैसे एक जेल SFTP उपयोगकर्ता (chroot जेल) बनाने के लिए
AWS मार्केटप्लेस उपयोगकर्ताओं के लिए महत्वपूर्ण नोट:
यदि आपने अपने मार्केटप्लेस सर्वर पर रूट खाता सक्षम नहीं किया है, तो आपको नीचे दिए गए आदेशों को सुडो के साथ चलाने की आवश्यकता होगी। ऐसा करने का सबसे आसान तरीका है जो एक सुडो खोल के भीतर है और जब आप समाप्त हो जाते हैं तो बाहर निकलें। उदाहरण के लिए, निम्नलिखित आदेशों के साथ शुरू करें:
sudo su
और जब समाप्त हो गया:
exit
यहाँ हम जाने...
सभी TurnKey सर्वर SFTP पूर्व-configured और सक्षम के साथ आते हैं। हालांकि, डिफ़ॉल्ट रूप से सभी उपयोगकर्ताओं ने पूरे फाइल सिस्टम तक पहुंच पढ़ी है। जब तक आप उन्हें पढ़ने वाली फ़ाइलों को ध्यान में नहीं रखते हैं, तब तक यह एक मुद्दा नहीं हो सकता क्योंकि डिफ़ॉल्ट नए गैर-निजी उपयोगकर्ताओं ने अपने घर डायरेक्टरी को छोड़कर कहीं भी एक्सेस नहीं लिखी है। (आमतौर पर /home/USERNAME), प्लस कहीं भी आप स्पष्ट रूप से उन्हें पहुंच लिखने देते हैं। अतिरिक्त रूप से, SFTP को SSH द्वारा प्रदान किया जाता है, डिफ़ॉल्ट रूप से वे SSH शेल में भी लॉग इन कर सकते हैं। वे क्या कर सकते हैं फिर से सीमित हो जाएंगे, लेकिन यह अभी भी संभव नहीं है।
So in a scenario where you only want SFTP users to log in via SFTP (and not SSH) and you want them locked in their own directory (i.e. "chroot जेल" के रूप में जाना जाता है तो आप SSH/SFTP को उसको करने के लिए कॉन्फ़िगर कर सकते हैं।
नीचे मैंने आवश्यक कमांड दिए हैं। वे स्क्रिप्ट फॉर्म में हैं ताकि कमांडलाइन को कॉपी/पेस्ट किया जा सके। कृपया ध्यान दें, मैंने कमांड आइडमेटेंट (i.e.) बनाने की कोशिश की है। यदि आप उन्हें कई बार चलाते हैं तो चीजें नहीं तोड़ती हैं लेकिन मैंने बड़े पैमाने पर इसका परीक्षण नहीं किया है। इसलिए यदि आप इसके कुछ हिस्सों को फिर से चलाते हैं, तो ऐसा मौका है कि आपके पास अप्रत्याशित परिणाम हो सकते हैं। उपयोगकर्ता से संबंधित कमांड को एक नए उपयोगकर्ता (NEW_USER के मूल्य को बदलने) के लिए फिर से चलाया जा सकता है, लेकिन sftp_users समूह और SSH config को जोड़ने के लिए केवल एक बार किया जाना चाहिए। यदि आपको SSH विन्यास सेटिंग्स को ट्वीक करने की आवश्यकता है, तो मैं अनुशंसा करता हूं कि आप मैन्युअल रूप से config फ़ाइल संपादित करें।
एक बार फिर भागें
आवश्यक समूह बनाएँ:
groupadd sftp_users
एक बार नया उपयोगकर्ता चलाने के लिए
एक नया उपयोगकर्ता जोड़ें। मैं यहाँ "newuser" नाम का उपयोग कर रहा हूँ, लेकिन आप जो भी नाम आप की तरह इस्तेमाल कर सकते हैं, हालांकि मैं दृढ़ता से सुझाव देता हूँ कि आप केवल लोअरकेस वर्णों का उपयोग न करें, बल्कि विशेष वर्णों के साथ कर सकते हैं। यदि आप अतिरिक्त उपयोगकर्ताओं को जोड़ना चाहते हैं, तो "NEW_USER" (नीचे पहली पंक्ति में) के मान को बदल दें:
NEW_USER="newuser" useradd -G sftp_users -s /sbin/nologin $NEW_USER passwd $NEW_USER
एक बार जब आपने नए उपयोगकर्ता के लिए पासवर्ड सेट किया है और इसकी पुष्टि की है, तो नया उपयोगकर्ता खाता बनाने के लिए पूरा करें:
mkdir -p /home/$NEW_USER/files chown root:root /home/$NEW_USER chown $NEW_USER:$NEW_USER /home/$NEW_USER/files chmod 700 /home/$NEW_USER/files usermod -d /files $NEW_USER
एक बार फिर दौड़ें!
इसके बाद हमें SSH/SFTP को फिर से कॉन्फ़िगर करने की आवश्यकता है। ऐसा करने के लिए हमें SSH config फ़ाइल (/etc/ssh/sshd_config).) को संपादित करना होगा। कृपया ध्यान दें, यह केवल किया जाना चाहिए एक बार.:
CONF=/etc/ssh/sshd_config
SEARCH="Subsystem sftp \/usr\/lib\/openssh\/sftp-server"
NEW_LINE="Subsystem sftp internal-sftp"
sed -i "/^$SEARCH/ s|^|#|" $CONF
sed -i "/$NEW_LINE/d" $CONF
sed -i "/$SEARCH/a\\$NEW_LINE" $CONF
if ! grep "Match Group sftp_users" $CONF >/dev/null; then
cat >> $CONF <<EOF
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /home/%u
ForceCommand internal-sftp
EOF
fi
अंतिम चरण SSH को पुनरारंभ कर रहा है:
service ssh restart
यदि आपको अपने SSH सेटिंग्स को आगे बढ़ाने की आवश्यकता है, तो कृपया नैनो जैसे टेक्स्ट एडिटर का उपयोग करके मैन्युअल रूप से कॉन्फ़िगर फ़ाइल को संपादित करें।
nano /etc/ssh/sshd_config
उपयोगकर्ता अपने घर में स्वचालित रूप से sftp (/home/user/files).) करेंगे वे माता-पिता निर्देशिका (/home/user)) को सीडी करने में सक्षम होंगे लेकिन वहाँ पढ़ने के अलावा कुछ और नहीं होगा (और किसी भी उच्च ब्राउज़ नहीं कर सकते)।
Additional notes: If you wish to allow your chrooted SFTP user a little more flexibility (e.g. allow scp and/or rsync), then instead of giving them a /sbin/nologin shell, install rssh (apt-get install rssh) और उन्हें /usr/bin/rssh शेल दें।