Я полностью осведомлен, этот вопрос задали бесчисленные времена, но никакое решение, упомянутое, прежде чем работается для моего случая.
Моя конфигурация:
$ cat /etc/vsftpd-anon.conf
listen=YES
local_enable=NO
anonymous_enable=YES
write_enable=YES
anon_root=/var/anonftp
xferlog_enable=YES
listen_address=10.0.0.2
listen_port=9988
allow_writeable_chroot=YES
Посмотрите, я не использую вещей корневого каталога. Существует этот каталог, который я создал специально для этого случая. Я также добавил allow_writeable_chroot
опция и vsftpd распознают его, но ИГНОРИРУЮТ IT.
целевой каталог:
$ ls -l /var/ | grep anonftp
drwxrwxrwx 3 root root 4096 led 26 11:09 anonftp
Как я пытаюсь использовать его:
$ sudo killall vsftpd
$ sudo vsftpd /etc/vsftpd-anon.conf &
[1] 21064
$ ftp 10.0.0.2 9988
Connected to 10.0.0.2.
220 (vsFTPd 3.0.2)
Name (10.0.0.2:david): anonymous
331 Please specify the password.
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
Ничто в vsftpd.log
Выполненный echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf && service vsftpd restart
У меня была та же проблема, и ничто не помогло. нет:
ftp, таким образом, я сделал strace к процессу vsftpd и видел следующие строки:
... 18825 chdir("/usr/share/empty") = 0 18825 chroot(".") = 0 ...
после изменения полномочий на/usr/share/empty с
chmod 0644 /usr/share/empty
ошибка закончилась.
echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf && service vsftpd restart
Выполнение вышеупомянутая команда каждый раз при редактировании конференции
В моем случае с примерно такой же конфигурацией проблема заключалась в том, что у вновь созданного пользователя не было своего собственного / home / {username}
каталога
In vsftpd.conf
, у меня были эти строки:
...
user_sub_token=$USER
local_root=/var/www/$USER
...
Не уверен, но похоже, что vsftpd
сначала пытается войти в пользовательский каталог / home
, затем в случае успеха он выполняет chroot ()
в local_root
, и поскольку у пользователя не было своего собственного каталога / home / {username}
- он завершился ошибкой выше.
Итак, добавив каталог / home / {username}
и указав пользователя в качестве владельца - это решено!