नया vsftpd उपयोगकर्ता बनाएं और होम / लॉगिन निर्देशिका को निर्दिष्ट करें


31

मुझे समय-समय पर CentOS linux सर्वर पर विभिन्न निर्देशिकाओं के लिए अस्थायी और सीमित पहुंच की आवश्यकता होती है, जिसमें vsftp स्थापित है।

मैंने एक उपयोगकर्ता का उपयोग करके बनाया है useradd [user_name]और उन्हें पासवर्ड का उपयोग करके दिया है passwd [password]

मैंने एक निर्देशिका बनाई है /var/ftpऔर फिर मैं इसे उस निर्देशिका से बाँधता हूँ जिसकी मैं पहुँच को सीमित करना चाहता हूँ।

मुझे यह सुनिश्चित करने के लिए विशेष रूप से क्या करने की आवश्यकता है कि जब यह उपयोगकर्ता एफ़टीपी में लॉग इन करता है, तो उनके पास केवल इस निर्देशिका तक पहुंच है?


क्षमा करें, लेकिन क्या आपने कभी vsftpd.conf की जांच करने पर विचार किया है?
जिरिब

हाँ। मेरे पास है। यह मुझे नहीं बताता कि किसी विशिष्ट उपयोगकर्ता को किसी विशिष्ट निर्देशिका में लॉग इन करने का निर्देश कैसे दिया जाए ...?
जिगोजाको 12

1
ज़रूर? chroot_list_enable विकल्प ... या आप $ होम से अलग निर्देशिका को ओवरराइड करने का मतलब है?
जिरिब

1
मैं जानना चाहता हूं कि किसी विशिष्ट उपयोगकर्ता के लिए विशिष्ट होम निर्देशिका कैसे घोषित की जाए। मैंने सक्षम chroot_list_enableऔर बनाया है /etc/vsftpd/chroot_list। मुझे नहीं पता था कि आगे क्या करना है।
जिगोजाको

फिर उपयोगकर्ता के होमेडिर को बदलने का usermod।
जिरिब

जवाबों:


44

पूर्ण उत्तर जो किसी भी अन्य के लिए मेरे प्रश्न को हल करता है जो कि कदम वॉकथ्रू द्वारा एक कदम के बाद है ...

एक गाइड के रूप में इसकाvsftpd उपयोग कर स्थापित करें ।

  • के साथ उपयोगकर्ता बनाएँ useradd [user_name]
  • के साथ उपयोगकर्ता का पासवर्ड बनाएं passwd [user_name]। (आपको पासवर्ड निर्दिष्ट करने के लिए प्रेरित किया जाएगा)।
  • में FTP निर्देशिका बनाएँ /var/ftpऔर फिर उस 'होम' निर्देशिका से बाँधें जिसे आप इस उपयोगकर्ता के लिए निर्दिष्ट करना चाहते हैं mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/
  • के साथ उपयोगकर्ता की होम डायरेक्टरी बदलें usermod -d /var/ftp/custom_name/ user_name

    यह /etc/vsftpd/vsftpd.confसुनिश्चित करें कि निम्नलिखित सभी सेट किए गए हैं: -

    • chroot_local_user = हाँ
    • chroot_list_enable = हाँ
    • chroot_list_file = / etc / vsftpd.chroot_list

vsftpd.chroot_listयदि आप उन्हें सर्वर पर कहीं भी पूर्ण पहुँच देना चाहते हैं, तो केवल फ़ाइल में उपयोगकर्ताओं को सूचीबद्ध करें। इस फ़ाइल में उन्हें सूचीबद्ध न करके, आप कह रहे हैं कि सभी vsftpdउपयोगकर्ताओं को उनके निर्दिष्ट होम डायरेक्टरी में प्रतिबंधित करें ।

दूसरे शब्दों में (संदर्भ के लिए): -

  1. इसका मतलब है कि डिफ़ॉल्ट रूप से, सभी उपयोगकर्ताओं को फ़ाइल में उपयोगकर्ताओं को छोड़कर chroote मिलता है ...
    • chroot_local_user = हाँ
    • chroot_list_enable = हाँ
  2. इसका मतलब है कि डिफ़ॉल्ट रूप से, फ़ाइल में केवल उपयोगकर्ताओं को क्रोकेटेड किया गया है ...
    • chroot_local_user = नहीं
    • chroot_list_enable = हाँ

उस उपयोगकर्ता की होम डायरेक्टरी को सीधे सेट क्यों नहीं किया जाता है /var/www/vhosts/domain.com/? क्या इसमें कोई समस्या है (जैसे कोई संभावित जोखिम)?
लीव्स

2
मुझे अभी पता चला है कि vsftp सुरक्षा कारणों से चेरोट शीर्ष स्तर पर एक ftp उपयोगकर्ता लिखने की अनुमति देने के लिए मना करता है (लेकिन मुझे 100% यकीन नहीं है)। ताकि यह "अप्रत्यक्ष" होने का एक कारण हो सकता है ताकि किसी भी भाई-बहन के फ़ोल्डर को देखने की अनुमति न देते हुए किसी विशिष्ट फ़ोल्डर तक पहुँच प्रदान करने के लिए, जो कि आपके घर को एक स्तर ऊपर सेट करने की अनुमति न हो, उल्लिखित मुद्दे से बचा जाता है)। (देखें ubuntuforums.org/… )
लेमेस

2
@zigojacko क्या आपका उपयोगकर्ता केवल अपने असाइन किए गए होम डायर को देखता है? मेरे लिए, यह उपयोगकर्ता को निर्दिष्ट निर्देशिका में डिफॉल्ट करता है, लेकिन, वे अभी भी अन्य फ़ोल्डरों को देख सकते हैं और रूट तक सभी तरह से स्नूप कर सकते हैं, हालांकि केवल पढ़ने की पहुंच के साथ।
ग्राहमफ

1
यह उत्तर, unix.stackexchange.com/questions/208960/… के संयोजन में मेरे लिए पूर्ण उत्तर था। मैंने एक समूह में एक उपयोगकर्ता का निर्माण किया और समूह की पहुंच को वांछित निर्देशिका तक सीमित कर दिया।
ग्राहमएफ

10

मेरे लिए यह ऊपर के बाद भी काम नहीं किया। पहले से ही एक निर्देशिका में स्थानीय_रोट सेट था, और मैं जो कुछ भी करता हूं, उपयोगकर्ता की निर्देशिका में जेल नहीं हुई है। अंत में इसे केवल बदले जाने के बाद काम किया जाता है

chroot_local_user = हाँ

और निम्नलिखित प्रक्रिया

  1. vi /etc/vsftpd.conf
  2. पंक्ति 'user_config_dir = / etc / vsftpd_user_conf' (कोई उद्धरण नहीं) जोड़ें
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi उपयोगकर्ता_नाम;
  6. 'लोकल_रोट = / srv / ftp / user_name' लाइन डालें

बस मेरे दो सेंट अगर किसी और को एक ही मुद्दा था।


मैंने इस प्रक्रिया का अनुसरण किया, बनाम गनतपा द्वारा अतिरिक्त चरणों सहित, vsftpd की रूट डायरेक्टरी को बदलने के लिए। दुर्भाग्य से, यह अभी तक काम नहीं करता है। Filezilla की रिपोर्ट 530 लॉगिन गलत है। उपयोगकर्ता और पासवर्ड ऊपर की प्रक्रिया (user_name) के अनुसार हैं। मैंने एक परीक्षण उपयोगकर्ता ftp2 बनाया, और उसका पासवर्ड सेट किया। Filezilla सामान्य लॉगऑन उस उपयोगकर्ता नाम और पासवर्ड का उपयोग करता है। मैंने केवल पढ़ने के लिए रूट डायरेक्टरी भी सेट की है, और इस पोस्ट के अनुसार लिखने की अनुमति के साथ निचले स्तर की निर्देशिका बनाई है, मैं उबंटू 16.04 का उपयोग कर रहा हूं यदि इससे कोई अंतर पड़ता है।
टाइम

मैं Ubuntu 16.04 का उपयोग कर रहा हूँ, अगर इससे कोई फर्क पड़ता है, तो @gnaanaa। इसके अलावा, मुझे लगा कि यह अजीब था कि / var में कोई ftp डायरेक्टरी नहीं थी। इसलिए मुझे / var / ftp और फिर / var / ftp / user_name बनाना था। code<br/> प्रतिक्रिया: 220 (vsFTPd 3.0.3) <br/> कमांड: USER ftp2 <br/> प्रतिक्रिया: 331 कृपया पासवर्ड निर्दिष्ट करें। <br/> कमांड: PASS ***** <br/> प्रतिक्रिया। : 530 लॉगिन गलत है। <br/> त्रुटि: गंभीर त्रुटि: सर्वर से कनेक्ट नहीं हो सका <br/>code
tim11g

सबसे पहले, देखें कि आप सर्वर में प्रवेश क्यों नहीं कर पाए। आप सफलता लॉगिन करने के बाद ही इस समस्या को समाप्त कर सकते हैं। चीयर्स।
गन्ना

क्या मशीन पर खातों की तुलना में vsftp एक अलग उपयोगकर्ता / पासवर्ड का उपयोग करता है? मुझे पता चला कि smbpasswd -a के साथ अलग से smb पासवर्ड सेट करना पड़ता था। क्या vsftpd उसी तरह काम करता है?
टिम ११

नहीं, यह सिस्टम उपयोगकर्ता खाता है। इस उत्तर की जाँच करें: askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.