एक ssh उपयोगकर्ता कैसे जोड़ें जिसके पास केवल विशिष्ट फ़ोल्डर तक पहुंचने की अनुमति है?


17

एक ssh उपयोगकर्ता कैसे जोड़ें जिसके पास केवल विशिष्ट फ़ोल्डर तक पहुंचने की अनुमति है?

useradd -d /var/www/xyz.com.tr/musteri  -s /bin/bash -g sshd musteri

मैंने एक यूजर को बुलाया musteri। मैंने इसका होम फोल्डर और ग्रुप सेट किया। इसलिए, मैं musteriउपयोगकर्ताओं को "/var/www/xyz.com.tr/musteri" में एकीकृत करना चाहता हूं । मैं नहीं चाहता कि यह दूसरे फ़ोल्डर तक पहुंचे।


क्या आप चाहते हैं कि उपयोगकर्ता के पास पूर्ण शेल एक्सेस हो, या केवल sftp और rsync जैसे प्रोटोकॉल की प्रतिलिपि बनाएँ?
गिल्स एसओ- बुराई को रोकें '

यदि बाद में, आप scponlyएक शेल के रूप में देखना चाहते हैं , तो संभवतः chrootउस निर्देशिका तक अपनी पहुंच को सीमित करने के लिए मोड में काम कर रहे हैं और कहीं नहीं।
शादुर

1
@ गिल्स - मैं sftp के माध्यम से पहुंचना चाहता हूं। लेकिन, मैं नहीं चाहता कि यह दूसरे फोल्डर तक पहुंचे।
सेल-ओ

1
@ सेल-ओ: यदि आपको केवल कुछ फाइल ट्रांसफर प्रोटोकॉल की जरूरत है, न कि शेल्स की, तो चेरोट प्लस का स्कॉप्ली या आरएसएच (गूगल scponly chrootया rssh chrootआपको हॉव्टो तक ले जाना चाहिए) का उपयोग करें।
गिलेस एसओ- बुराई को रोकना '

ACL का उपयोग कैसे करें?
fpmurphy

जवाबों:


19

ऐसा लगता है कि आप चाहते हैं कि आपके müşteriler को वास्तव में उन्हें गोले दिए बिना किसी फ़ोल्डर में फ़ाइल स्थानांतरण एक्सेस हो। यह एक अच्छी बात है क्योंकि जैसा कि बिनफ्लेस ने बताया , सीमित पहुंच वाले लोगों को गोले देना बहुत मुश्किल है क्योंकि गोले को केवल चलाने के लिए सिस्टम पर बिखरे हुए सभी प्रकार की चीजों तक पहुंच की आवश्यकता होती है।

एसएफटीपी को एक विशिष्ट फ़ोल्डर तक पहुंच प्रदान करने के लिए, आप ऐसा कुछ कर सकते हैं।

  1. सिस्टम में एक नया समूह जोड़ें, 'sftponly' कहें।
  2. अपने सिस्टम पर ऐसे किसी भी उपयोगकर्ता को जोड़ें, जिसके पास इस समूह के लिए सीमित अधिकार होने चाहिए। आप उन्हें प्रतिबंधित गोले जैसे / बिन / सच दे सकते हैं, लेकिन इसकी आवश्यकता नहीं है।
  3. /etc/ssh/sshd_configइन पंक्तियों के साथ अपनी ssh config फाइल (आमतौर पर ) को बदलें
    सबसिस्टम आंतरिक sftp

    मैच ग्रुप sftponly
        चेरोटडायरेक्टरी% h
        AllowTCPForwarding सं
        X11Forwarding सं
        ForceCommand आंतरिक sftp

यह SSH के अंदर sftp सबसिस्टम को सक्रिय करता है और उस सिस्टम समूह के सदस्यों को केवल लॉग इन करते समय उस सिस्टम का उपयोग करने के लिए मजबूर करता है। यह उन्हें उनके होम डायरेक्टरी में भी भेज देगा। आप इसे अपने होम-डायरेक्टर्स के सब-फोल्डर के रूप में अच्छी तरह से बदल सकते हैं ChrootDirectory %h/musteri_sftpताकि वे अपने सिस्टम की बाकी फाइलों को जब्त न कर सकें, लेकिन सीधे अपने होम फोल्डर के एक विशेष सबफ़ोल्डर में लॉग इन करें।

कोलय गेलसिन।


.Ncelikle teşekkürler। ;) जैसा कि आपने उल्लेख किया है, मैं SFTP. सेट करता हूं, लेकिन मुझे iptables के बारे में समस्या है। यह मेरा नियम है। -> A RH-Firewall-1-INPUT -m राज्य --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
सेल-ओ

1
बिरसे डेविल। एफ़टीपी पोर्ट 21 का उपयोग करेंगे, SFTP एक FTP है की तरह प्रोटोकॉल SSH चैनल से अधिक रन, तो यह SSH पोर्ट का उपयोग करने जा रहा है जो डिफ़ॉल्ट रूप से 22. है
कालेब

ध्यान दें कि आपको पहले से मौजूद सबसिस्टम कमांड का पता लगाना चाहिए और टिप्पणी करनी चाहिए (जैसे सबसिस्टम sftp / usr / lib / opensh / sftp-server)
CnrL

मेरी समस्या का समाधान किया और कुछ आसान तुर्की वाक्यांश सीखे! बक्शीश!
eimajenthat

2

मेरी राय में यह बहुत मुश्किल है, अगर असंभव नहीं है। जब उपयोगकर्ता SSH के माध्यम से जुड़ता है तो उसे कम से कम एक शेल की आवश्यकता होती है, आपके मामले में bash। निष्पादित करने के लिए /bin/bashउसे पहुंच की अनुमति की आवश्यकता होती है /binbashखुद को /etc(उदाहरण के लिए /etc/bash.bashrc) से कुछ सामान पढ़ने की जरूरत है , इसलिए उपयोगकर्ता को भी एक्सेस करने की आवश्यकता है /etc। उपयोगकर्ता को इस निर्देशिका में घूमने की इच्छा न रखते हुए, वह एक फ़ाइल पढ़ना चाहता है, लेकिन उदाहरण के लिए निष्पादित करने के लिए vimउसे उस तक पहुंचने की आवश्यकता होती है/usr/bin
यह सिर्फ एक मामूली प्रदर्शन है, कुछ और निर्भरताएं हैं, उदाहरण के लिए मुझे वास्तव में नहीं पता है कि उपयोगकर्ता के पास पहुंच नहीं होने पर क्या होगा /tmp

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


rbashबिल्कुल ऐसा करने के लिए डिज़ाइन किया गया है।
बहमट

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