оригинал статьи: http://agapoff.name/vsftpd-oops.html
Предыстория такова, что разработчики 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 и скомпилировать их самостоятельно. После установки в конфиг можно будет добавить опцию:
1.
allow_writeable_chroot=YES
Можно скомпилировать и старые версии до 2.3.5. Решение прямое и простое, но не ubuntu-way.
2. Секьюрный способ для ненастоящих джедаев – это сдаться и просто отобрать права на запись в домашние директории тем пользователям, которые ходят по ftp:
1.
chmod
a-w /home/user
3. Третий способ – это воспользоваться расширенной сборкой vsftpd-ext, которую поддерживает наш соотечественник по имени Дмитрий. Ей в конфиге тоже можно указать опцию, возвращающую старое поведение. Только выглядит эта опция чуть по-другому:
1.
allow_writable_root=YES
4. Четвёртый хороший способ – это воспользоваться трудами доброго человека, который создал PPA на launchpad’e, куда положил собственную сборку vsftpd 2.3.5, в которую бэкпортнул опцию allow_writeable_chroot. Поставить отсюда сборку можно так:
1.
sudo
add-apt-repository ppa:thefrontiergroup/vsftpd
2.
sudo
apt-get update
3.
sudo
apt-get
install
vsftpd
Два других способа я не проверял, но встречал их на просторах сети. Впрочем, они всё равно мне не сильно нравятся.
5. Пятый способ – это добавить опцию local_root=/home в конфиге. Тогда chroot будет в директорию /home, а пользователь, перейдя в свой хомяк, сможет туда складывать файлы.
6. Шестой способ выглядит совсем неправдоподобным. Он говорит о том, что доманий каталог пользователя в /etc/passwd надо поменять на “/home/./user”, и вроде бы это обманет vsftpd.
В общем, есть из чего выбрать.