Повідомлення про помилку "500 OOPS: vsftpd: відмова від запуску із кореневим кодом, що записується всередині chroot ()" - тримайте користувача у в'язниці


19

Поки що я не зміг утримати користувача FTP, який знаходиться у в'язниці до каталогу їх веб-сайтів. Чи є рішення, яке обидва виправляє цю помилку і тримає користувача у в'язниці до їх каталогу?

Мої налаштування 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 повністю.

Я намагався:

Як ми можемо виправити цю помилку та утримувати користувача до свого домашнього каталогу?


Як-то для мене, принаймні, з "віртуальними" користувачами ftp, просто додавання налаштувань allow_writeable_chroot=YESбуло достатньо і насправді працювало "як очікувалося" FWIW ...
rogerdpack

Відповіді:


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 або того, що вам потрібно: все буде працювати, і користувач матиме дозволи на запис.
lucaferrario

13

Після подальшого розгляду цієї публікації в коментарях був розміщений пакет, який вирішив мою проблему. Ви можете шукати його за моїм іменем або "Позначення" Документація: http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-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
Зверніть увагу: рішення Кріса додасть сторонній сервер пакетів до вашого списку сховищ! Навіщо встановлювати захищений, захищений паролем FTP-сервер, коли ви сліпо приймаєте закордонні пакети програм для встановлення у вашій системі. (Кріс: Я не думаю, що ти скористаєшся, але використовувати це рішення ІМХО - це погана систематизація)
рето

1
у вас є кращий підхід до вирішення цієї дилеми @reto? Це було вирішити невеликий безлад. Дякую за твою допомогу.
Кріс Хоф

якщо в дистрибутиві є оновлений пакет, я б спробував ним скористатися. Більшість дистрибутивів надають підтримку для старих версій. Якщо це неможливо, я б дістав джерело від оригінального розробника і створив його сам. Якщо навколо панує патч, я можу застосувати його (зазвичай вони невеликі і їх можна перевірити вручну).
рето

Ця нитка має 12000 переглядів, давайте припустимо, що 5% використовувати ваше рішення та додати ваше репо. Ви можете легко додати нову версію основного пакету з інтегрованою задньою стороною. За тиждень ви могли отримати доступ до 600 систем там. Я не думаю, що ви б це зробили, але додавання стороннього репо просто не дуже безпечно.
рето

1
Я не потребував оновлення від репо. Для мене додавши рядок "enable_writeable_chroot = ТАК" виправлено помилку
abumalick

7

Відповідно до попередньої відповіді "РЕАЛЬНЕ вирішення цієї проблеми: домашня папка користувача не повинна бути доступною лише для читання." Загальне мислення правильне, але з неправильним усвідомленням.

Нижче я спробую навести простий приклад:

Для початку нам потрібно побудувати топологію каталогу користувачів:

 / додому (ro)
   | -компонент (rw, 700)
         | -ftp_upload (ro, 555) - ch_rooting тут, необхідний лише для читання vsftpd :(
           | -temp (rw, 755)
           | -in_box (rw, 755)
           | -out_box (rw, 755)

vsftpd.conf вирізати:

# Увімкнути хронінг
chroot_local_user = ТАК

# chroot всіх користувачів, крім прослуханих у chroot_list
chroot_list_enable = ТАК

# Список виключень В ідеалі він повинен бути порожнім;)
chroot_list_file = / etc / vsftpd / chroot_list

# Зіставити ftp кореневий каталог у конкретний каталог
local_root = / home / someuser / ftp

Ця конфігурація чудово працює з конфігурацією для одного користувача . Для багатокористувацьких слід додатково використовувати директиву "user_config_dir".

** ОНОВЛЕННЯ 20/09

------ **

Ось хитрий спосіб вирішення, не найкраща ідея для використання, але .... Якщо вам потрібна коренева папка ftp, що записується, просто вставте команди зміни дозволу в команди перед запуском та після запуску.

  1. Попередній запуск - зміна дозволів на лише читання, необхідних серверу (:

  2. Запуск сервера

  3. Після запуску - змініть дозвіл на читання-запис або який вам потрібен.


Я спробував багато варіантів, але не зміг змусити його працювати на WP-сервері. Це працює для вас у конфігурації WP?
Кріс Хоф

дивіться, щоб оновити розділ, mauby цей варіант може допомогти вам, це не зовсім безпечно, але якщо немає інших можливостей ...
Reishin

1

Це майже те, що згадувало toastboy70. Зробіть ftp-root dir chown'd до ftp.ftp і не-доступним для запису (/etc/vsftpd.conf): anon_root = / srv / ftp

Потім зробіть записувану дитину для редагування: / srv / ftp / upload


0

До файлу /etc/vsftpd.conf мені також потрібно було додати наступне:

seccomp_sandbox=NO

І немає потреби у користувальницькій репо !!

І прокоментуйте рядок:

write_enable=YES

0

Просте виправлення - це зробити так, як підказує повідомлення про помилку: зробіть корінь незаписним, а потім, якщо вам потрібно включити завантаження, зробіть підкаталог, який має дозвіл на запис. Не потрібно змінювати конфігурацію.


0

Після 3 годин googling я потрапив на Ubuntu 14.04.2 LTS VSFTPd 3, що працює. Після доступу до клієнта домашня папка буде видимою / home / vimal. Я ввійшов у систему vimal із привілеєм root. У мене створена папка 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 працює, ви можете додатково налаштувати його на конкретні потреби, деякі з перелічених вище мають значення за замовчуванням, але я не пам'ятаю точно.

Помилки, помічені у FTP-клієнта:

1. 500 OOPS: помилка prctl PR_SET_SECCOMP

Рішення.

seccomp_sandbox=no    

[додайте його в першому рядку vsftpd.conf, після закінчення початкового коментованого розділу]

2. 500 OOPS: vsftpd: відмова від запуску із кореневим кодом, що записується, всередині chroot ()

allow_writeable_chroot=YES

Я додав це в останньому рядку.


0

Я вирішив проблему vsFTPd, відмовившись працювати з корінтом, що записується, всередині chroot () на моєму сервері Ubuntu наступним чином:

Я щойно додав у vsftpd.confфайл рядок нижче :

allow_writeable_chroot=YES
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.