सवाल chroot निर्देशिका घटक के लिए बुरा स्वामित्व या मोड


मैंने उपयोगकर्ता MY_USER बनाया है। अपने घर डीआईआर को / var / www / RESTRICTED_DIR पर सेट करें, जो वह मार्ग है जिस पर उसे प्रतिबंधित किया जाना चाहिए। तब मैंने sshd_config संपादित किया और सेट किया:

Match user MY_USER
  ChrootDirectory /var/www/RESTRICTED_DIR

तब मैंने एसएसएच को फिर से शुरू किया। RESTRICTED_DIR के MY_USER स्वामी (और समूह स्वामी) को बनाया, और इसे 755 पर चिपका दिया। मुझे मिलता है

Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER

अगर मैंने sshd_config से 2 लाइनों को हटा दिया है तो उपयोगकर्ता सफलतापूर्वक लॉगिन कर सकता है। बेशक यह सभी सर्वर तक पहुंच सकते हैं। समस्या क्या है? मैंने रूट करने के लिए RESTRICTED_DIR को भी चिह्नित करने की कोशिश की (जैसा कि मैंने कहीं पढ़ा है कि किसी ने भी ऐसा ही समस्या हल की है)। कोई भाग्य नहीं..


44
2018-03-27 18:50


मूल




जवाब:


से man पृष्ठ:

ChrootDirectory
  निर्देशिका के पथनाम को बाद में chroot (2) में निर्दिष्ट करता है   प्रमाणीकरण। पथनाम के सभी घटक रूट-स्वामित्व वाले होना चाहिए   निर्देशिका जो किसी अन्य उपयोगकर्ता द्वारा लिखने योग्य नहीं हैं या   समूह। Chroot के बाद, sshd (8) कार्यशील निर्देशिका बदलता है   उपयोगकर्ता की होम निर्देशिका में।

मेरा अनुमान है कि पथ पर एक या अधिक निर्देशिकाएं उन आवश्यकताओं को पूरा नहीं करती हैं (मेरा संदेह है www आपके वेब उपयोगकर्ता द्वारा स्वामित्व या लिखने योग्य है, रूट नहीं)।
वापस जाएं और दिशाओं का पालन करें, यह सुनिश्चित करना कि ऊपर की आवश्यकताएं बोल्ड इटालिक्स पूरा किया गया है।


51
2018-03-27 19:14



यह मुझे पागल कर रहा है। मैंने "चाउन रूट: रूट-आर / var / www" किया; "chmod 775-आर / var / www /"; "usermod -a -G रूट www-data"। लेकिन मैं अभी भी MY_USER के साथ लॉगिन नहीं कर सकता - MultiformeIngegno
क्या आवश्यकताओं में पूरक समूह शामिल हैं (जिसे मैंने usermod के साथ जोड़ा है) ?? यदि हाँ यह अनुपयोगी है .. :( - MultiformeIngegno
आवश्यकता पथ घटक पर है (/, /var, /var/www, तथा /var/www/RESTRICTED_DIR सभी को ऊपर सुरक्षा आवश्यकताओं को पूरा करना होगा)। यह है एक सच chroot (मैन पेज की समीक्षा करें) - आपके उपयोगकर्ता की होम निर्देशिका मौजूद होने की आवश्यकता है chroot के भीतर, जैसा जरूरी है /bin और अन्य सभी चीजें जो आपके उपयोगकर्ता को चाहिए ... - voretaq7
ठीक! हल किया। मैंने chrooted डीआईआर एक स्तर ऊपर सेट किया। तब मैंने मूल chrooted_dir को 777 परमिट दिए। यह काम कर रहा है :) - MultiformeIngegno
मुझे पता है कि यह काफी पुराना है, लेकिन इसके लिए अनुमतियों को संशोधित करने के बजाय /var/www पथ सीधे, जो अपाचे तोड़ सकता है, आप दूसरी निर्देशिका में अपनी sftp निर्देशिका डालने से कहीं बेहतर होगा, फिर अपाचे में यूआरएल मैपिंग का उपयोग करके दूसरी निर्देशिका को इंगित करें। यहां प्रलेखन की जांच करें httpd.apache.org/docs/2.4/urlmapping.html के अंतर्गत Files Outside DocumentRoot - Daniel


ChrootDirectory निर्देशिका रूट के स्वामित्व में होना चाहिए और 755 मोड है:

sudo chown root:root /var/www/RESTRICTED_DIR
sudo chmod 755 /var/www/RESTRICTED_DIR

ठीक है, अब सभी फाइलें /var/www/RESTRICTED_DIR के स्वामित्व में होना चाहिए MY_USER, जो संबंधित होना चाहिए www-data समूह, और समूह अनुमतियों को अनुमति देने के लिए 775 मोड है, जैसे:

sudo usermod -a -G www-data MY_USER
sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
sudo chmod 775 -R /var/www/RESTRICTED_DIR/*

ध्यान दें: याद रखें कि एक अच्छा अभ्यास केवल एक htdocs फ़ोल्डर तक पहुंच की अनुमति देता है यदि आप अपाचे कॉन्फ़िगर कर रहे हैं।


25
2018-01-16 21:07



बहुत यकीन है कि यह होना चाहिए sudo usermod -a -G www-data MY_USER क्योंकि समूह के बाद आना चाहिए -G - sMyles