केवल एक Centos / linux स्थापना पर विशिष्ट / dir / पहुंच के साथ एक FTP उपयोगकर्ता कैसे बनाया जाए


44

तो मैं एक VPS - CentOS Linux इंस्टालेशन पर हूँ। मेरे पास सर्वर पर vsFTPd है। मेरे पास वर्तमान में मेरे रूट उपयोगकर्ता के माध्यम से सर्वर तक एसएफटीपी पहुंच है, लेकिन अब मैं केवल एक विशिष्ट निर्देशिका में एफ़टीपी एक्सेस के साथ एक नया उपयोगकर्ता बनाने की कोशिश कर रहा हूं, मैंने निम्नलिखित कार्य किया है:

1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com

मैं जो करने के लिए संघर्ष कर रहा हूं वह केवल उपयोगकर्ता तक पहुंच बनाने के लिए है /var/www/mydomain.com - मैंने देखा कि उपयोगकर्ता सही फ़ोल्डर में सही तरीके से लॉग इन करता है, हालांकि उपयोगकर्ता अन्य निर्देशिकाओं में "वापस" ब्राउज़ कर सकता है। मैं चाहता हूं कि उपयोगकर्ता विशिष्ट फ़ोल्डर में चिपक जाए और वापस "ब्राउज़" करने में सक्षम न हो

कोई विचार?

मुझे अलग-अलग लेख मिल गए हैं, लेकिन ऊपर वर्णित चरणों में इसका उपयोग करने के लिए इसे समझ नहीं पाया है।


digitalocean.com/community/tutorials/… आप अपने मुद्दे को हल करने के लिए इसका अनुसरण कर सकते हैं
जैक

उन लोगों के लिए जो उबंटू 18 पर हैं, यहां संस्करण विशिष्ट digitalocean.com/community/tutorials/… है
Dung

जवाबों:


39

यह काफी सरल है।

आपको निम्न विकल्प को vsftpd.conf फ़ाइल पर जोड़ना होगा

chroot_local_user=YES

कॉन्फ़िगरेशन फ़ाइल के अंदर प्रलेखन स्व-व्याख्यात्मक है:

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().

इसका मतलब है, कि उपयोगकर्ता के पास केवल आपके द्वारा उपयोगकर्ता के गृह के रूप में कॉन्फ़िगर किए गए फ़ोल्डर पर पहुंच होगी। हालांकि, मेरे पास उपयोगकर्ता पासवार्ड प्रविष्टि का एक उदाहरण है:

upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash

निम्नलिखित कमांड के साथ उपयोगकर्ता की होम डायरेक्टरी सेट करें

usermod -d /var/www/my.domain.example/ exampleuser

नोट: मेरे उदाहरण में, यह उपयोगकर्ता लिनक्स के अंदर कुछ अनुसूचित कार्यों के लिए एक वैध उपयोगकर्ता भी है। यदि आपको इसकी आवश्यकता नहीं है, तो कृपया /sbin/nologinइसके बजाय उपयोगकर्ता के शेल को बदलें bash


हाय nwildner! इस पर मुझे जवाब देने के लिए समय निकालने के लिए बहुत बहुत धन्यवाद। तो मेरी vsftpd.conf फ़ाइल में ive ने निम्नलिखित पंक्ति "chroot_local_user = YES" जोड़ दी - तो जैसा कि मैं समझता हूँ कि मुझे अपने उपयोगकर्ता के लिए दिखायी जाने वाली पंक्ति के समान एक पंक्ति जोड़ने की आवश्यकता है? यह अवश्य स्वीकार करें कि आपके द्वारा प्रदान किए गए उदाहरण के साथ वहाँ क्या लिखा जाए। "1001" आदि क्या है? मान लें कि मेरा उपयोगकर्ता कहा जाता है: "im_a_linux_noob" और उस उपयोगकर्ता के लिए निर्देशिका है: "/var/www/mydomain.com" - यह कैसा दिखेगा?
user1231561

और क्या मैं अपने पोस्ट में किए गए किसी भी अतिरिक्त कदम के बिना ऐसा करने में सक्षम होगा? तो 1-8 कर रहे हैं और फिर जो आप वर्णन करते हैं उसे जोड़ना चाहिए?
user1231561

नमस्ते। ऊपर दिया गया उदाहरण /etc/passwdफ़ाइल की एक पंक्ति (संशोधित, निश्चित रूप से) है , जो upload_ftp, 1001: 1001 नामक एक उपयोगकर्ता का प्रतिनिधित्व करता है, जो उसकी उपयोगकर्ता आईडी और ग्रुप आईडी है, / var / www / साइटें उपयोगकर्ता की घर निर्देशिका है (और पैरामीटर जो कि vsftpd से पढ़ता है) और / बिन / बैश, शेल। संभवतः आपके मामले में जो गायब है वह उपयोगकर्ता के लिए एक होम डायरेक्टरी है, और इसे निम्न कमांड से हल किया जा सकता है usermod -d /var/www/mydomain.com <username>:। चीयर्स :)

3
हाँ, बहुत बहुत धन्यवाद। एक मुद्दा हालांकि। यह सामान्य एफ़टीपी के माध्यम से ठीक लॉगगिन काम करता है, हालांकि जब मैं एसएफटीपी के रूप में लॉगिन करता हूं - तो मैं फिर से ब्राउज़ कर सकता हूं - कोई विचार?
user1231561

1
निश्चित रूप से क्योंकि sftp आपके ssh सर्वर द्वारा संभाला जा रहा है, आपके ftp सर्वर द्वारा नहीं। "क्रूड" तरीके से: एसएफटीपी = एसएसएच + एफ़टीपी; एफटीपीएस = एफ़टीपी + एसएसएल। यहाँ sftp के बारे में एक सूत्र है, और मैं इसे aviod विषय दोहराव के लिए उद्धृत करूँगा? ;) unix.stackexchange.com/a/64541/34720

6

शामिल करने के बाद आपने अपना कॉन्फ़िगरेशन बदल दिया है chroot_local_user=YES

आप उपयोगकर्ता के शेल को बदल सकते हैं /usr/sbin/nologinताकि यदि पासवर्ड लीक हो जाए तो आपको कुछ जोखिम कम हो जाएगा (होम निर्देशिका भी सेट करें)। शेल को भी सूचीबद्ध होना चाहिए /etc/shellsया प्रमाणीकरण विफल हो जाएगा।

usermod -d /var/www/my.domain.example -s / usr / sbin / nologin उदाहरण

-d, --home HOME_DIR उपयोगकर्ता की नई लॉगिन निर्देशिका। यदि -m विकल्प दिया जाता है तो वर्तमान होम डायरेक्टरी की सामग्री को नए होम डायरेक्टरी में ले जाया जाएगा, जो कि पहले से मौजूद न होने पर बनाई गई है।

-s, --shell शेल उपयोगकर्ता के नए लॉगिन शेल का नाम है। इस फ़ील्ड को रिक्त पर सेट करने से सिस्टम डिफ़ॉल्ट लॉगिन शेल का चयन करता है।

https://security.appspot.com/vsftpd/FAQ.txt


4

यहां उपयोगकर्ता को सेटअप करने और उपयोगकर्ता को केवल एफ़टीपी (यानी कोई एसएसएच) के माध्यम से प्रवेश करने की अनुमति दी जाती है और प्रोफेट पर एक विशिष्ट (उपयोगकर्ता होम) निर्देशिका तक पहुंच को सीमित किया जाता है :

  1. नई उपयोगकर्ता को जोड़ना: adduser newusername

  2. पासवर्ड सेट करें: passwd newusername

  3. उपयोगकर्ता होम निर्देशिका को डिफ़ॉल्ट से एक नए फ़ोल्डर में संशोधित करें:

    usermod -d /target/directory username

  4. shellsफ़ाइल संपादित करें : vi /etc/shellsऔर /dev/nullअंत में जोड़ें

  5. फ़ाइल newusernameमें प्रविष्टि संशोधित करें passwd: इससे पहले vi /etc/passwdजोड़ने के /./लिए newusernameताकि प्रविष्टि इस तरह दिखे:

    newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null

    चरण 4 और 5 के लिए विवरण यहाँ:

  6. /etc/proftpd/proftpd.confफ़ाइल संपादित करें और लाइन को अनइंस्टॉल करेंDefaultRoot ~


-4

अपने रूट खाते के साथ रूट फ़ोल्डर अनुमतियों को 711 पर सेट करें ।


-4

यह आदेश चलाएँ:

useradd -d ftp_user:chown 711 /etc/init.d/

2
आपको अपनी पोस्ट को कम से कम, कुछ सहायक स्पष्टीकरण या प्रलेखन के विस्तार पर विचार करना चाहिए।
HalosGhost

यह एक भयानक उत्तर है। आप अनिवार्य रूप से ftp उपयोगकर्ता को /etc/init.d/ निर्देशिका - पूर्ण पागलपन के लिए पूर्ण पहुँच दे रहे हैं। 711 समझाया - अनुमतियाँ-
calculator.org/decode/0711
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.