त्रुटि संदेश "500 OOPS: vsftpd: chroot ()" के अंदर लिखने योग्य रूट के साथ चलने से इनकार करना


19

अब तक मैं एफ़टीपी उपयोगकर्ता को अपनी वेबसाइट निर्देशिका में जेल में रखने में असमर्थ रहा हूँ। क्या कोई समाधान है जो दोनों इस बग को ठीक करता है और उपयोगकर्ता को उनकी निर्देशिका में जेल में रखता है?

मेरी vsFTPd सेटिंग जो मैंने बदली:

listen_port=9000
Set: anonymous_enable=NO
Uncomment: local_enable=YES
Uncomment: write_enable=YES
Uncomment: local_umask=022
Set: connect_from_port_20=NO
Uncomment: idle_session_timeout=600
Uncomment: data_connection_timeout=120
Comment out: #ftpd_banner=Welcome to blah FTP service. [should be on line 104]
Added: banner_file=/etc/issue.net
Uncomment: chroot_local_user=YES
Uncomment: chroot_local_user=YES
Uncomment: chroot_list_enable=YES
Uncomment : chroot_list_file=/etc/vsftpd.chroot_list

मेरे द्वारा जोड़ी गई फ़ाइल के अंत में:

# Show hidden files and the "." and ".." folders.
# Useful to not write over hidden files:
force_dot_files=YES

# Hide the info about the owner (user and group) of the files.
hide_ids=YES

# Connection limit for each IP address:
max_per_ip=10

# Maximum number of clients:
max_clients=5

# FTP Passive Settings
pasv_enable=YES
#If your listen_port is 9000 set this range to 7500 and 8500
pasv_min_port=[port range min]
pasv_max_port=[port range max]

विचाराधीन उपयोगकर्ता mybloguser, उसकी / उसके वेबसाइट निर्देशिका के तहत जेल गया है /srv/www/myblogऔर यह उपयोगकर्ता nano /etc/vsftpd.chroot_listफ़ाइल का हिस्सा नहीं है । उपयोगकर्ता की होम डाइरेक्टरी भी /srv/www/myblogअतीत में काम करती थी।

मैंने उस allow_writeable_chroot=YESसमाधान की कोशिश की जो काम नहीं करता था, और वास्तव में vsFTPd को पूरी तरह से तोड़ दिया।

मैंने कोशिश की है:

हम दोनों इस त्रुटि को कैसे ठीक कर सकते हैं और उपयोगकर्ता को उनकी होम निर्देशिका में जेल में रख सकते हैं?


किसी तरह, मेरे लिए, कम से कम "आभासी" एफ़टीपी उपयोगकर्ताओं के साथ, बस सेटिंग जोड़ना allow_writeable_chroot=YESकाफी था और वास्तव में काम किया "अपेक्षित"
एफडब्ल्यूआईडब्ल्यू

जवाबों:


18

VSFTPD 3 के लिए,

  1. के लिए जाओ: /etc/vsftpd.conf
  2. और इसे जोड़ें:

    allow_writeable_chroot=YES
    

    बस इसे जोड़ें अगर यह अभी तक मौजूद नहीं है।

  3. Vsftpd सेवा को पुनरारंभ करें:

    service vsftpd restart
    

और यह काम करना चाहिए।


3
प्रश्नकर्ता वास्तव में बताता है कि उसने पहले ही यह कोशिश की थी और यह काम नहीं किया, इसलिए यह उसके प्रश्न का उत्तर नहीं है।
निवेदक

2
मैं इस पसंद के सुरक्षा निहितार्थ के बारे में कहां पढ़ सकता हूं?
झिलमिलाहट

मेरे लिए काम किया (यह भी स्वीकृत उत्तर की टिप्पणी में उल्लेख किया गया था)
सेवर्रे

16

इस समस्या का वास्तविक समाधान: उपयोगकर्ता का होम फ़ोल्डर केवल पढ़ने योग्य नहीं होना चाहिए ।

इसलिए, यदि उपयोगकर्ता साइट फ़ोल्डर में है cat/example.com/http/, तो फ़ोल्डर catहोना आवश्यक है chmod 555और सब ठीक हो जाएगा।


12
इसका कोई अर्थ नही बन रहा है। उपयोगकर्ता की निर्देशिका लेखन योग्य नहीं होनी चाहिए ???
केविन बोवेन

6
अगर वे नहीं लिख सकते हैं तो उपयोगकर्ता UPLOAD फ़ाइलों को वास्तव में कैसे माना जाता है ?!
सेरिन

यह अपलोड अधिकारों के बिना एक गुमनाम ftp के लिए अच्छी तरह से काम करता है, धन्यवाद!
पैलसिंट

सही! अब यह ठीक है
user1406691

5
यह पूरी तरह से काम करता है! बस उपयोगकर्ता के लिए chmod 555 के साथ एक घर बनाएं और फिर, उसके अंदर, वेबसाइट (या वेबसाइटों) के लिए एक घर बनाएं, जिसमें chmod 755 या आपके द्वारा आवश्यक: सब कुछ काम करेगा और उपयोगकर्ता के पास लिखने की अनुमति होगी।
लुकाफेरो

13

इस पोस्ट की आगे की समीक्षा के बाद, टिप्पणियों में एक पैकेज पोस्ट किया गया जिसने मेरा मुद्दा तय किया। आप इसे मेरे नाम या "मार्क्स" डॉक्यूमेंटेशन: http://www.benscobie.com/fixing-500-oops-vsftpd-refuse-to-run-with-writable-root-inside-chroot/ द्वारा खोज सकते हैं । यहाँ मेरा विवरण है कि मैंने इसे आगे कैसे तय किया।

उपयोगकर्ताओं को उनके घर की दुकानों के लिए भेजा जाता है !!!

# ------------------------------------------------------------------------------
# SETUP FTP USERS --------------------------------------------------------------
# ------------------------------------------------------------------------------

# create the ftp users and lock them to the website directories
useradd -d /srv/www/[website/appname] -m [ftp user name]

# set the ftp account passwords
passwd [ftp user name]

# add the ftp users to the www-data user/group
adduser [ftp user name] www-data

# BUG FIX: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
sudo add-apt-repository ppa:thefrontiergroup/vsftpd
sudo apt-get update
sudo apt-get install vsftpd

# Edit the vsftpd.conf and append this setting to the end of the file to keep users' jailed!
nano /etc/vsftpd.conf

# add all of the text between the starting [[ and ending ]]
# [[

# Keep non-chroot listed users jailed
allow_writeable_chroot=YES

# ]]

# restart the service for changes to take effect
sudo service vsftpd restart

#test ftp via secondary terminal window:
ftp [ftp user name]@[server ipaddress] [ftp port]

11
कृपया ध्यान दें: क्रिस का समाधान आपकी रिपॉजिटरी सूची में तीसरे पक्ष के पैकेज सर्वर को जोड़ देगा! जब आप अपने सिस्टम पर स्थापित किए जाने वाले विदेशी सॉफ़्टवेयर पैकेजों को आँख बंद करके स्वीकार करते हैं , तो एफ़टीपी चेरोटेड एफ़टीपी सर्वर क्यों स्थापित करें। (क्रिस: मुझे नहीं लगता कि यह है कि आप लाभ ले जाएगा, लेकिन इस समाधान IMHO का उपयोग कर बुरा sysadmining है)
रीटो

1
क्या आपके पास इस दुविधा @reto को हल करने के लिए एक बेहतर तरीका है? यह हल करने के लिए एक छोटी सी गड़बड़ है। आपके सहयोग के लिए धन्यवाद।
क्रिस हफ

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

इस थ्रेड में 12'000 विचार हैं, मान लें कि 5% आपके समाधान का उपयोग करते हैं और आपके रेपो को जोड़ते हैं। आप आसानी से एक पिछले पैकेज के साथ एक कोर पैकेज का नया संस्करण जोड़ सकते हैं। एक सप्ताह के भीतर आप वहाँ से 600 सिस्टम तक पहुँच सकते हैं। मुझे नहीं लगता कि आप ऐसा करेंगे, लेकिन तीसरे पक्ष के रेपो को जोड़ना बहुत सुरक्षित नहीं है।
रीटो

1
मुझे रेपो से अपडेट करने की आवश्यकता नहीं थी। मेरे लिए लाइन जोड़ना "allow_writeable_chroot = YES" ने बग तय किया
abumalick

7

पिछले उत्तर के अनुसार "इस समस्या का वास्तविक समाधान: उपयोगकर्ता का होम फ़ोल्डर केवल पढ़ने योग्य नहीं होना चाहिए।" सामान्य सोच सही है, लेकिन गलत बोध के साथ।

नीचे मैं एक सरल उदाहरण देने की कोशिश करूँगा:

एक शुरुआत के लिए, हमें उपयोगकर्ता निर्देशिका की टोपोलॉजी बनाने की आवश्यकता है:

 / घर (आरओ)
   | -सोम्यूसर (आरडब्ल्यू, 700)
         | -ftp_upload (आरओ, 555) - यहाँ ch_rooting, आवश्यक केवल-पढ़ने के लिए vsftpd :(
           | -टेम्प (आरडब्ल्यू, 755)
           | -इन_बॉक्स (आरडब्ल्यू, )५५)
           | -आउट_बॉक्स (आरडब्ल्यू, )५५)

vsftpd.conf कट:

# क्रोटिंग सक्षम करें
chroot_local_user = हाँ

# chroot_list के अंदर सुने को छोड़कर सभी उपयोगकर्ताओं को क्रॉल करें
chroot_list_enable = हाँ

# अपवाद सूची। आदर्श रूप से, यह रिक्त होना चाहिए;)
chroot_list_file = / etc / vsftpd / chroot_list

# नक्शा ftp रूट निर्देशिका विशिष्ट निर्देशिका के लिए
local_root = / घर / someuser / एफ़टीपी

यह कॉन्फ़िगरेशन एकल-उपयोगकर्ता कॉन्फ़िगरेशन के साथ बहुत अच्छा काम करता है। बहु-उपयोगकर्ता के लिए, "user_config_dir" निर्देश का अतिरिक्त उपयोग किया जाना चाहिए।

** अद्यतन 20/09

------ **

यहाँ मुश्किल वर्कअराउंड है, उपयोग करने के लिए सबसे अच्छा विचार नहीं है, लेकिन .... अगर आपको लिखने योग्य ftp रूट फ़ोल्डर की आवश्यकता है, तो बस प्री-स्टार्ट और पोस्ट-स्टार्ट कमांड में अनुमति परिवर्तन कमांड डालें।

  1. पूर्व-प्रारंभ - केवल पढ़ने के लिए अनुमतियाँ बदलें, जिसके लिए सर्वर की आवश्यकता होती है (:

  2. सर्वर शुरू करें

  3. पोस्ट-स्टार्ट - पढ़ने-लिखने की अनुमति, या जिसकी आपको आवश्यकता है, को बदलें।


मैंने कई बदलावों की कोशिश की, लेकिन यह एक WP सर्वर के लिए काम नहीं कर सका। क्या यह आपके लिए WP कॉन्फ़िगरेशन पर काम कर रहा है?
क्रिस हॉफ

खंड को अद्यतन करने के लिए देखो, इस संस्करण को यू मदद कर सकता है, ऐसा करने के लिए पूरी तरह से सुरक्षित नहीं है, लेकिन अगर कोई अन्य संभावनाएं नहीं हैं ...
Reishin

1

यह बहुत ज्यादा टोस्टबॉय 70 का उल्लेख है। Ftp- रूट dir chown'd को ftp.ftp और गैर-लेखन योग्य (/etc/vsftpd.conf) बनाएं: anon_root = / srv / ftp

फिर एक योग्य बच्चे को dir: / srv / ftp / अपलोड करें


0

मुझे /etc/vsftpd.conf फ़ाइल में निम्न जोड़ना होगा:

seccomp_sandbox=NO

और कस्टम रेपो की कोई जरूरत नहीं !!

और लाइन को अनलाइक करें:

write_enable=YES

0

साधारण सुधार यह है कि त्रुटि संदेश से पता चलता है: रूट को गैर-योग्य बनाएं और फिर यदि आपको अपलोड सक्षम करने की आवश्यकता है, तो एक उपनिर्देशिका बनाएं जिसमें लिखित अनुमति हो। कोई भी विन्यास आवश्यक नहीं है।


0

3 घंटे की गुगली के बाद मुझे Ubuntu 14.04.2 LTS VSFTPd 3 काम करने को मिला। होम फोल्डर दिखाई देगा / होम / विमल एक बार एक ग्राहक के साथ पहुँचा। मैंने विमल के साथ रूट विशेषाधिकार के साथ लॉग इन किया है। मेरे पास ftpShare फ़ोल्डर बना है, लेकिन इसका बहुत अर्थ नहीं है।

sudo chown vimal:vimal /home/vimal/ftpShare/

कुछ उपयोगी आदेश:

sudo nano /etc/vsftpd.conf
sudo service vsftpd restart
sudo apt-get purge vsftpd
netstat -a | grep ftp
tcp        0        0        *:ftp         *:*        LISTEN
ftp://12.345.23.xxx/  for browser login

ऊपर का मतलब है कि ftp डेमन काम कर रहा है

मेरे पास कॉन्फ़िगरेशन है:

seccomp_sandbox=no
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chroot_list_enable=NO
secure_chroot_dir=/var/run/vsftpd/empty
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
allow_writeable_chroot=YES

एक बार एफ़टीपी काम करने के बाद आप इसे विशिष्ट आवश्यकताओं के अनुरूप बना सकते हैं, ऊपर के कुछ डिफ़ॉल्ट मान हैं, लेकिन मुझे ठीक से याद नहीं है।

FTP क्लाइंट में देखी गई त्रुटियां:

1. 500 OOPS: prctl PR_SET_SECCOMP विफल

समाधान।

seccomp_sandbox=no    

[प्रारंभिक टिप्पणी अनुभाग समाप्त होने के बाद इसे पहली पंक्ति vsftpd.conf पर जोड़ें]

2. 500 OOPS: vsftpd: चेरोट के अंदर लिखने योग्य जड़ के साथ चलने से इनकार करना ()

allow_writeable_chroot=YES

मैंने इसे अंतिम पंक्ति में जोड़ा।


0

मैंने अपने उबंटू सर्वर पर चेरोट () के अंदर एक लिखने योग्य रूट के साथ चलाने से मना करने वाली vsFTPd की समस्या को हल किया:

मैंने अभी vsftpd.confफाइल में नीचे की लाइन जोड़ी है :

allow_writeable_chroot=YES
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.