vsftpd: лицом к лицу с “500 OOPS: vsftpd: refusing to run with writable root inside chroot ()”
Date November 2nd, 2012 Author Vitaly Agapov
Предыстория такова, что разработчики 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: Linux, Ubuntu, vsftpd
Category:
Linux |
17 Comments »
19 August 2013 - 17:27
Единственная нормальная, всё объясняющая, статья во всём рунете!
29 November 2013 - 17:11
Полностью согласен с предыдущим оратором. Спасибо большое!
29 November 2013 - 17:45
и да, пятый способ сработал
10 March 2014 - 10:29
Автору спасибо. Arch Linux ставил в марте 2014 года и 5 способ сразу подошел. Другие варианты даже не пробовал. Добавил указанную строку в vsftpd.conf и все заработало.
11 March 2014 - 17:04
6-й способ не сработал.
5-й способ сработал!
25 March 2014 - 8:48
6-й способ сработал после добавления в конфиг:
passwd_chroot_enable=YES
2 September 2014 - 17:21
У меня работает без проблем так:
chroot_local_user = yes
chroot_list_enable =yes
chroot_list_file – создать файл и прописать в нем своего юзера
20 October 2014 - 1:02
Воспользовался трудами доброго человека. Автору ++ в карму :_
3 December 2014 - 15:23
Спасибо, выручил
Линукс Минт 17, качал vsftp из репы, с чрутом возился долго, помог способ 1
респект автору !!!
17 December 2014 - 20:53
5 способ сработал. Хотя решение, на мой взгляд кривовато.
21 January 2015 - 15:56
Крис ты гондон вафельный!!! А не разработчик!!!
28 January 2015 - 1: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
18 March 2015 - 20:20
Реально помогло! Выбрал 5й
25 March 2015 - 16:50
Отличная статья. Сделал 1-й вариант.
26 March 2015 - 2:35
Сделал 1 вариант.
При тупом копировании конфига строка
secure_chroot_dir=/var/run/vsftpd
меняется на
secure_chroot_dir=/var/run/vsftpd/empty
18 August 2015 - 23:26
Большое спасибо за статью.
7 May 2019 - 6:14
[…] всё тут