चिरोटेड SFTP उपयोगकर्ता अनुमतियाँ लिखते हैं


10

मेरे पास केवल उपयोगकर्ताओं के sftp के साथ एक सेटअप है:

Match Group sftponly
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

मुझे अपने सिक्योर में निम्नलिखित संदेश मिलते हैं।

fatal: bad ownership or modes for chroot directory

मैच कीवर्ड के साथ इसके साथ कुछ सुरक्षा सामग्री आती है ... निर्देशिका को रूट के स्वामित्व की आवश्यकता होती है, और निर्देशिका को chmod 755 (drwxr-xr-x) की आवश्यकता होती है। तो यह एक उपयोगकर्ता के लिए फ़ोल्डरों के लिए अनुमतियों को लिखना असंभव बनाता है, अगर यह उपयोगकर्ता रूट के लिए केवल लिखने योग्य है और ssh की सुरक्षा के कारण समूहों के लिए गैर-लेखन योग्य है।

किसी अच्छे काम के बारे में जानते हैं?


क्या chrootएड यूजर्स के अपने हैं ChrootDirectory? क्या वे इसे एक्सेस कर सकते हैं?
जॉन डब्ल्यूएच स्मिथ

जवाबों:


2

हमारे सर्वर पर समान सेटिंग्स हैं। हम SSHD के समान विन्यास का उपयोग करते हैं। उपयोगकर्ताओं की होम निर्देशिकाएं रूट के स्वामित्व में होती हैं और उनके भीतर फ़ोल्डर होते हैं documentsऔर public_htmlसंबंधित उपयोगकर्ताओं के स्वामित्व में होते हैं। उपयोगकर्ता तब SFTP का उपयोग कर लॉगिन करते हैं और उन फ़ोल्डरों में लिखते हैं (सीधे घर में नहीं)। जैसा कि एसएसएच को उनके लिए अनुमति नहीं है, यह पूरी तरह से काम करता है। आप समायोजित कर सकते हैं कि कौन सी निर्देशिकाओं को नए उपयोगकर्ताओं के लिए / etc / skel / (कम से कम खुले तौर पर, मैं अन्य डिस्ट्रो से परिचित नहीं हूँ) के लिए बनाया जाएगा।

एक अन्य संभावना ACL ( ओपनस्स डॉक्यूमेंटेशन ) होगी - यह अपने होम डायरेक्टरी के लिए संबंधित उपयोगकर्ता के लिए लिखित अनुमति जोड़ सकता है।


1
मेरे लिए, डेबियन जेसी (8.10) पर, उपयोगकर्ता के घर पर एसीएल स्थापित करने से काम नहीं चलता है। जब उपयोगकर्ता SFTP के साथ लॉगिन करने की कोशिश करता है, तो उन्हें मिलता हैpacket_write_wait: Connection to 10.0.0.42 port 22: Broken pipe
ड्रू चैपिन

7

हमें हाल ही में एक वर्कअराउंड मिला है जो इस प्रकार है:

/ Etc / ssh / sshd_config:

...

Subsystem sftp internal-sftp

Match Group sftponly
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

निर्देशिका अनुमतियाँ:

root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*

अब प्रतिबंधित उपयोगकर्ताओं के /homeलिए आवश्यकताओं को पूरा ChrootDirectoryनहीं किया जा सकता है और न ही उन्हें प्रतिबंधित किया जा सकता है, लेकिन sftponlyउपयोगकर्ता लॉग इन नहीं कर पाएंगे, अगर उनके घर की निर्देशिका हमेशा की तरह सेट की गई है ( /home/$LOGNAME): विकृत वातावरण के तहत उनके घर की निर्देशिका अंदर नहीं /homeबल्कि सीधे नीचे हैं जड़ ( /)।

समाधान 1

प्रतिबंधित उपयोगकर्ताओं के घरों को निर्धारित करें कि वे क्रोच के तहत कैसे दिखाई देते हैं:

root@server:~ # usermod -d /username username

चेतावनी 1

अगर कोई भी अप्रतिबंधित उपयोगकर्ता या कुछ प्रशासन स्क्रिप्ट बैश के टिल्ड विस्तार का उपयोग करता है, तो ~usernameयह /usernameअब तक विस्तारित हो जाएगा , जो कि इसका मतलब नहीं है।

साथ ही sftponlyउपयोगकर्ताओं को बनाने वाले व्यवस्थापक को गैर-डिफ़ॉल्ट घर का उपयोग करने के लिए याद रखना होगा। एक स्क्रिप्ट के साथ हल करने योग्य। जिसे उपयोग करने के लिए एडमिन को याद रखना होगा।

समाधान 2

यह पिछले एक विकल्प है जिसे हमने प्रयोग करके समाप्त किया है:

root@server:~ # ln -s . /home/home

जो कि /homeअपने स्वयं के dirname के अंदर एक सिमलिंक बनाता है । अब चेरोट /home/usernameअंक के तहत उसी निर्देशिका के लिए जैसे कि चेरोट के बिना। प्रतिबंधित उपयोगकर्ता के लिए sftp के साथ लॉग इन किया जाता है, जैसा कि यह दिखाई देगा /username। यह निर्देशिका अपने मालिक (प्रतिबंधित उपयोगकर्ता) के लिए उपयुक्त है। प्रतिबंधित उपयोगकर्ता अपने माता-पिता या किसी भी भाई-बहन के घर निर्देशिका को नाम से सूचीबद्ध नहीं कर सकता है।

एक sftponlyउपयोगकर्ता के बारे में एकमात्र खास बात है sftponlyसमूह में उसकी भागीदारी । हमने वर्कअराउंड 1 से निपटना आसान पाया।

कैविएट्स 2

  1. आपके पास घर निर्देशिका के साथ 'घर' नाम का उपयोगकर्ता नहीं हो सकता है /home/home
  2. आपको उन लिपियों से सावधान रहना होगा जो /homeपदानुक्रम को पीछे छोड़ती हैं और सहानुभूति का पालन करती हैं।

हाय आर्टम या किसी अन्य पाठक, मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन क्या आप मुझे वर्कअराउंड 2 कृपया समझने में मदद कर सकते हैं? मेरे पास एक उपयोगकर्ता (ftpuser) है जिसे उनके घर निर्देशिका (/ home / ftpuser /) पर जेल की आवश्यकता है, यह मैं स्वीकार कर सकता हूं लेकिन / home / ftpuser के पास निश्चित रूप से 755 होना चाहिए। मुझे अपने होम डायरेक्टरी में फाइल्स नाड फोल्डर बनाने में सक्षम होने के लिए ftpuser की आवश्यकता है। मुझे किस सिम्लिंक को बनाने की आवश्यकता है, और मेरे ChrootDirectory का क्या मूल्य होना चाहिए?
ब्लिटेंट

4

आपको उपयोगकर्ता की होम डायरेक्टरी के अंदर एक संरचना बनाने की आवश्यकता है, जैसे कि अंदर और बाहर डायर। उन dirs को उपयोगकर्ता के स्वामित्व में होना चाहिए और वहां वह फाइलें डाल और प्राप्त कर सकेगा।


0

आपको निम्न निर्देशिका संरचना बनानी चाहिए:

/ घर / उपयोगकर्ता

/ घर / उपयोगकर्ता / घर / उपयोगकर्ता <- वास्तविक डायर जिसे उपयोगकर्ता की पहुंच होगी

वैकल्पिक रूप से:

/home/user/.ssh/authorized_keys <- यदि आप सार्वजनिक कुंजी से प्रमाणित करना चाहते हैं


0

@Artm (जो मैंने अभी परीक्षण किया है) से उत्तर में 'निर्देशिका अनुमतियाँ' अनुभाग के संदर्भ में .. मैंने पाया:

root@server:~ # chmod 111 /home <- Does not work

यह सब कुछ केवल 111 पर अनुमतियों के साथ ubuntu पर काम करने के लिए sftp कनेक्शन की अनुमति नहीं देता है।

मैने पाया कि:

root@server:~ # chmod 555 /home

रीड एंड एक्सक्यूट परमिशन यानी 555 के साथ sftp के कनेक्शन के साथ काम करता है। निश्चित नहीं है कि क्या डेबियन बनाम अन्य फ्लेवर अलग हैं, लेकिन यह वही है जो मेरे ubuntu इंस्टॉल पर काम करता है।


0

जब आप एक उपयोगकर्ता बनाते हैं, तो आपको chownप्रत्येक उपयोगकर्ता के लिए प्रत्येक dir का उपयोग करके स्वामित्व सेट करना होगा ।

उदाहरण के लिए:

sudo chown usertest:groupsftp /home/rootsftp/usertest
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.