Amazon EC2 Centos पर '/ var / www / html / website_abc' फ़ोल्डर में SFTP / FTP एक्सेस के साथ उपयोगकर्ता कैसे जोड़ें?


19

संभव डुप्लिकेट:
लिनक्स निर्देशिका अनुमतियाँ

मैं कुछ तृतीय-पक्ष डेवलपर्स के साथ काम कर रहा हूं और मैं एक वेबसाइट के लिए रूट फ़ोल्डर में SFTP (या एफ़टीपी) तक पहुंच प्रदान करना चाहूंगा जो वे काम कर रहे हैं, '/var/www/html/website_abc'ताकि वे वहां फाइलें अपलोड कर सकें। ध्यान दें कि मैं अपनी अन्य वेबसाइटों को समान EC2 उदाहरण पर होस्ट कर रहा हूं '/var/www/html/website_xyz'

सिर्फ इस बात पर जोर देने के लिए कि मैं 1 एकल EC2 उदाहरण पर कई वेबसाइटों के साथ काम कर रहा हूं, वेबसाइटों की संरचना इस प्रकार है:

/ var / www / html /
/ var / www / html / website_abc
...
/ var / www / html / website_xyz

मेरे लक्ष्य इस प्रकार हैं:

  • उपयोगकर्ता 'एडिफ़ेलर' की पहुंच '/ var / www / html / website_abc' और केवल '/ var / www / html / website_abc' तक है
    • मुझे लगता है कि उपयोगकर्ता 'adeveloper' SFTP (या FTP) में प्रवेश करने के लिए उपयोगकर्ता नाम के रूप में 'adeveloper @ [my लोचदार IP] का उपयोग करेगा, क्या मैं सही हूं?
  • उपयोगकर्ता 'एडिफ़ेलर' की मेरे EC2 उदाहरण में '/ var / www / html /' या किसी अन्य निर्देशिका तक पहुँच नहीं है
  • निजी कुंजी फ़ाइल के बारे में कैसे?
    • क्या मैं अपनी निजी कुंजी फ़ाइल को तृतीय-पक्ष डेवलपर्स में पास करता हूं - क्या ऐसा करना उचित है?
    • क्या उनके लिए एक अलग निजी कुंजी फ़ाइल जनरेट करने या उनके बजाय उपयोगकर्ता नाम और पासवर्ड के साथ लॉग इन करने की अनुमति है?

मैंने खोज की है, लेकिन ज्यादातर लोग यह बात कर रहे थे कि एसएफटीपी के माध्यम से ईसी 2 का उपयोग कैसे किया जाए जो मैं पहले से ही WinSCP का उपयोग करने में सक्षम हूं।

स्पष्टीकरण:

  • मुझे 'adeveloper' की आवश्यकता होगी ताकि वह सामान अपलोड करने में सक्षम हो सके /var/www/html/website_abcजिसे 'लिखना' अनुमति है
  • मुझे किसी भी फाइल / निर्देशिका के लिए 'लिखने' की अनुमति /var/www/html/नहीं है, और आदर्श रूप से 'रीड' की अनुमति नहीं है
  • हालाँकि, यहाँ बड़ी समस्या लगती है:
    • /var/www/html/पहले से ही 777 की अनुमति है क्योंकि यह मेरा डॉक्यूमेंटरूट फ़ोल्डर है। तो, मैं अपनी अन्य वेबसाइट तक पहुँचने से 'एडेवलपर्स' को कैसे रोकूँ?

आंशिक रूप से हल होने पर मैंने OpenSSH का उपयोग करके अपने लक्ष्यों को प्राप्त किया (I / .shsh फ़ोल्डर के अंदर / var / www / html / website_abc / बनाते हैं और निजी कुंजी उत्पन्न करता है और इसे तृतीय-पक्ष डेवलपर्स को देता है)। मुझे यह भी पता चला कि मुझे कभी भी उस निजी कुंजी फ़ाइल को नहीं देना चाहिए जो AWS ने मुझे दी है। फिर भी चुरोट के बारे में सीखना।


1
मुझे माफ़ करना @lain है लेकिन आपने मुझे गलत समझा होगा। मुझे लगता है कि आप इस तरह का झूठा फैसला देने के बजाय कुछ और सार्थक करने में समय बिता सकते हैं। शायद अगर आप मेरे सवाल को ध्यान से पढ़ते हैं, तो आप वास्तव में लिनक्स फाइल / फ़ोल्डर अनुमतियों की तुलना में एसएसएच / एसएफटीपी के साथ और अधिक कर सकते हैं या बल्कि यह भी (मैं भ्रमित क्यों था? मुझे मदद की जरूरत है)। यह आपके द्वारा समझाए गए अन्य धागे का सटीक डुप्लिकेट नहीं है। वैसे भी, मैं ओपनएसएसएच का उपयोग करके अपने लक्ष्यों को प्राप्त करने में कामयाब रहा। टॉम एच द्वारा सुझाए गए और कुछ खोज परिणामों के अनुसार मैं अभी भी चेरोट के बारे में सीख रहा हूं। धन्यवाद
ericn

"मुझे यह भी पता चला है कि मुझे कभी भी निजी कुंजी फ़ाइल नहीं देनी चाहिए AWS ने मुझे दिया" क्यों .....
माइकल बेली

जवाबों:


11

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

एक सामान्य सुरक्षा कॉन्फ़िगरेशन के रूप में यह दुर्भाग्यपूर्ण है क्योंकि कई फाइलें और निर्देशिकाएं हैं जो आवश्यकता के विश्व-पठनीय हैं। उदाहरण के लिए यहां मैं कुछ दूरस्थ CentOS बॉक्स पर एक गैर-रूट उपयोगकर्ता हूं;

$ cd /etc
-bash-3.2$ ls -1
acpi
adjtime
aliases
...

उदाहरण के लिए, मैं बहुत सारे सामान का उपयोग कर सकता हूं, आदर्श रूप से आप कुछ अज्ञात उपयोगकर्ता से प्रतिबंधित करना चाहते हैं, जिन्हें आप स्थानीय पहुंच प्रदान करना चाहते हैं।

यहां मुझे /etc/passwdफ़ाइल में कॉन्फ़िगर किए गए सभी स्थानीय उपयोगकर्ताओं को देख रहा है;

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...

यूनिक्स सिस्टम chrootकमांड प्रदान करता है जो आपको /फाइलसिस्टम पदानुक्रम में कुछ निर्देशिका में उपयोगकर्ता को रीसेट करने की अनुमति देता है , जहां वे "उच्च-अप" फ़ाइलों और निर्देशिकाओं तक नहीं पहुंच सकते हैं।

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

इसलिए आपके मामले में, आप करना चाहते हैं में उपयोगकर्ता निर्देशिका।chrootadeveloper/var/www/html/website_abc

आप अपने उपयोगकर्ता के लिए उन्हें इस /var/www/html/website_abcतरह उपनिर्देशिका तक सीमित करने के लिए एक वर्ण निर्देशिका सेट कर सकते हैं /etc/ssh/sshd_config;

इस सामान के लिए 4.8 से बाद में ओपनश-सर्वर की आवश्यकता होती है ?, इसलिए शायद CentOS 6.2 की आवश्यकता है

Match Group sftp
    ChrootDirectory %h
    AllowTcpForwarding no

(परीक्षण नहीं, man sshd_configसिंटैक्स की पुष्टि करने के लिए देखें )

और फिर उन उपयोगकर्ताओं को sftp ग्रुप में जोड़ें;

 groupadd sftp
 usermod -d /var/www/html/website_abc adeveloper
 usermod -G sftp adeveloper

साझा कुंजी के बारे में

आपको एडेप्टर उपयोगकर्ताओं के लिए एक अतिरिक्त कीपर बनाना चाहिए, और अपने सलाहकार को भेजें। (या वैकल्पिक रूप से, उन्हें अपनी सार्वजनिक कुंजी भेजें और इसके लिए अधिकृत_की फ़ाइल में जोड़ें adeveloper)

अपनी निजी कुंजी कभी न छोड़ें, यही कारण है कि इसे निजी कहा जाता है ;-)

पारंपरिक ftp विकल्प

vsftp / proftp आदि भी chroot कॉन्फ़िगरेशन का समर्थन करते हैं, लेकिन इस आधुनिक दिन में ssh आधारित कॉन्फ़िगरेशन सामान्य तरीका है, और ftp के लिए समर्थन केवल ऐतिहासिक है।

यहाँ ट्यूटोरियल के लिए कुछ लिंक हैं;
http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229

http://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lenny


मैं अब तक चेरोट का पता नहीं लगा पाया हूं, लेकिन मैं अभी भी सीख में हूं और अभी तक हार नहीं मानी है। मैं हालांकि OpenSSH का उपयोग करके ऊपर बताए गए अपने लक्ष्यों को प्राप्त करने में कामयाब रहा। धन्यवाद फिर से
ericn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.