W październiku aktualizowałem kilka systemu do nowego Debiana 7.0 (Wheezy). W 98% poszło bez większych problemów. Dzisiaj opowiem Wam o jednym z tych 2% przypadków, gdzie poszło coś nie tak.
Problem okazał się związany z vsftpd. Gdy mam pewność, że będzie tylko 1 użytkownik korzystał z FTP instaluję często proftpd, ale w przypadku gdy jest to serwer bardziej publiczny łatwiejszy w konfiguracji dla wielu użytkowników jest vsftpd.
Na pierwszy rzut oka wszystko działało poprawnie. Usługi wstały, wszystko pracowało. Do momentu pierwszego logowania Klienta. Wtedy serwer FTP zwracał następujący błąd:
OOPS: vsftpd: refusing to run with writable root inside chroot()
Pierwsza myśl. O co kaman? Gdy prześledzimy zmiany pomiędzy wersją 2.3.2 (squeeze), a wersją 2.3.5 (wheezy) zobaczymy, że autorzy na siłę chcieli nas uszczęśliwić:
Add stronger checks for the configuration error of running with a writeable root directory inside a chroot(). This may bite people who carelessly turned on chroot_local_user but such is life.
Jak widzimy, nie tylko Państwo „wie” co dla nas lepsze. I trudno sobie wyobrazić, aby tworzyć konta użytkownikom bez umieszczania ich w chroot-cie.
Ale łatwo możemy sobie poradzić z tym problemem, ponieważ powstał odpowiedni fix w wersji 3, który wprowadza przełącznik allow_writeable_chroot. Szybki przepis:
1 2 3 4 |
wget http://http.us.debian.org/debian/pool/main/v/vsftpd/vsftpd_3.0.2-3_amd64.deb -O vsftpd.deb dpkg -i vsftpd.deb echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf service vsftpd reload |
Smacznego.