vsftpd: лицом к лицу с “500 OOPS: vsftpd: refusing to run with writable root inside chroot ()”

Date November 2nd, 2012 Author Vitaly Agapov

Мы ведь не дети и отлично понимаем, что сила современной философии не в силлогизмах, а в авиационной поддержке.

Виктор Пелевин «S.N.U.F.F.»

Предыстория такова, что разработчики vsftpd (точнее её единственный разработчик под названием Крис Эванс) здраво рассудили, что ради безопасности надо бы запретить пользователям запись в корень своего chroot’а. То есть если пользователь по ftp chroot’ится в свою домашнюю директорию, то не пускать его в том случае, если у него есть права на запись в неё (можно писать только в поддиректории). Сказано-сделано. Выкатили версию 2.3.5 с этим изменением, а майнтайнеры репозиториев Ubuntu взяли, да и собрали эту версию в репы для 12.04 LTS. Оказалось, что после обновления у многих людей (у тех 99,9999% людей, которые не читают changelog’и) вдруг сломался доступ по ftp. И это при том, что не у всех ситуация позволяет просто так взять и отобрать права на запись в домашние директории. В общем всё это привело к тому, что на бедного Криса со всех уголков интернета полились ушаты говна, отчего он запилил версию vsftpd 3.0, куда добавил опцию конфига allow_writeable_chroot, возвращающую старое-доброе небезопасное поведение. Запилить-то запилил, но майнтайнеры Убунты заявлили, что собирать эту версию для своей 12.04 уже не будут и просто умыли руки.

В общем, решайте проблемы как хотите.

А решать проблемы можно несколькими простыми способами.

1. Первый способ – это скачать исходники vsvtpd-3.0 вот отсюда – https://security.appspot.com/vsftpd.html и скомпилировать их самостоятельно. После установки в конфиг можно будет добавить опцию:

allow_writeable_chroot=YES

Можно скомпилировать и старые версии до 2.3.5. Решение прямое и простое, но не ubuntu-way.

2. Секьюрный способ для ненастоящих джедаев – это сдаться и просто отобрать права на запись в домашние директории тем пользователям, которые ходят по ftp:

chmod a-w /home/user

3. Третий способ – это воспользоваться расширенной сборкой vsftpd-ext, которую поддерживает наш соотечественник по имени Дмитрий. Ей в конфиге тоже можно указать опцию, возвращающую старое поведение. Только выглядит эта опция чуть по-другому:

allow_writable_root=YES

4. Четвёртый хороший способ – это воспользоваться трудами доброго человека, который создал PPA на launchpad’e, куда положил собственную сборку vsftpd 2.3.5, в которую бэкпортнул опцию allow_writeable_chroot. Поставить отсюда сборку можно так:

sudo add-apt-repository ppa:thefrontiergroup/vsftpd
sudo apt-get update
sudo apt-get install vsftpd

Два других способа я не проверял, но встречал их на просторах сети. Впрочем, они всё равно мне не сильно нравятся.

5. Пятый способ – это добавить опцию local_root=/home в конфиге. Тогда chroot будет в директорию /home, а пользователь, перейдя в свой хомяк, сможет туда складывать файлы.

6. Шестой способ выглядит совсем неправдоподобным. Он говорит о том, что доманий каталог пользователя в /etc/passwd надо поменять на “/home/./user”, и вроде бы это обманет vsftpd.

В общем, есть из чего выбрать.

Tags: , ,
Category: Linux | 17 Comments »

Comments

17 комментариев на “vsftpd: лицом к лицу с “500 OOPS: vsftpd: refusing to run with writable root inside chroot ()””

  1. Дмитрий

    Единственная нормальная, всё объясняющая, статья во всём рунете!

  2. Rupreht

    Полностью согласен с предыдущим оратором. Спасибо большое!

  3. Rupreht

    и да, пятый способ сработал

  4. Robbi

    Автору спасибо. Arch Linux ставил в марте 2014 года и 5 способ сразу подошел. Другие варианты даже не пробовал. Добавил указанную строку в vsftpd.conf и все заработало.

  5. Oblomoff

    6-й способ не сработал.
    5-й способ сработал!

  6. Pedestrian

    6-й способ сработал после добавления в конфиг:
    passwd_chroot_enable=YES

  7. neorth

    У меня работает без проблем так:

    chroot_local_user = yes

    chroot_list_enable =yes

    chroot_list_file – создать файл и прописать в нем своего юзера

     

  8. Coolmac

    Воспользовался трудами доброго человека. Автору ++ в карму :_

  9. Андрей

    Спасибо, выручил

    Линукс Минт 17, качал vsftp  из репы, с чрутом возился долго, помог способ 1

    allow_writeable_chroot=YES

    респект автору !!!

    allow_writeable_chroot=YESре

  10. Наталья

    5 способ сработал. Хотя решение, на мой взгляд кривовато.

  11. Mike

    Крис ты гондон вафельный!!! А не разработчик!!!

  12. Роман

    Мне помогло это 

    echo "deb http://ftp.us.debian.org/debian jessie main contrib non-free" >> /etc/apt/sources.list
    aptitude update
    aptitude upgrade vsftpd
    echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf
    service vsftpd restart

  13. sash!

    Реально помогло! Выбрал 5й
     

  14. Андрей Николаев

    Отличная статья. Сделал 1-й вариант.

  15. Алексей

    Сделал 1 вариант.

    При тупом копировании конфига строка

    secure_chroot_dir=/var/run/vsftpd

    меняется на

    secure_chroot_dir=/var/run/vsftpd/empty

  16. halfhope

    Большое спасибо за статью.

  17. vsFTPd ошибка — refusing to run with writable root inside chroot » GTAlex о работе в сети и не только

    […] всё тут

Leave a comment

 Comment Form