При настройке vsftpd я в ловушке. Когда я выхожу из домашнего каталога ftpuser без разрешения на запись, я могу войти в систему, и все в порядке, несмотря на то, что я не могу писать (конечно). Когда я добавляю разрешение на запись, я получаю что-то вроде
cannot change to directory with write permissions if user is chrooted
Затем я добавил
allow_writeable_chroot=YES
в vsftpd.conf. Но теперь я получаю
ECONNREFUSED - Connection refused by serverss
Я потерян. Что я делаю не так?
Вот моя конфигурация:
ubuntu 12.04 - vsftpd 2.3.5 - etc / vsftpd.conf:
write_enable=YES
dirmessage_enable=YES
ftpd_banner="Welcome to my FTP service."
local_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
anonymous_enable=YES
anon_upload_enable=YES
anon_umask=022
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
syslog_enable=YES
connect_from_port_20=YES
ascii_upload_enable=YES
ascii_download_enable=YES
pam_service_name=vsftpd
listen=YES
В более ранних версиях allow_writeable_chroot=YES
параметр конфигурации недоступен (он был добавлен в vsftpd версии 3 и далее).
Как говорится в другом ответе, вы можете создавать разрешения на запись для вложенных папок, но оставлять папку chroot (и скрытые файлы внутри) только для чтения.
В моей реализации вы можете создать другую папку / home / username в chroot. Таким образом, подключение к FTP-серверу будет по умолчанию в домашнем каталоге пользователя. родственник в chroot.
В моем сценарии создания учетной записи пользователя это выполняется следующим образом (все команды выполняются как sudo):
chown root:root /home/$username
mkdir -p /home/$username/home/$username
chown $username:$username /home/$username/home/$username
Затем, когда пользователь входит на ftp-сервер, у него появляется новая домашняя папка относительно его chroot. Им принадлежит эта папка, и они могут вносить в нее изменения. Может потребоваться дополнительная настройка, чтобы установить его в качестве папки входа по умолчанию (passwd?); когда пользователь нажимает кнопку «домой» на каком-либо ftp-клиенте, который он использует, он переходит в эту папку.
Я решил проблему, не дав пользователю права на запись в его корневой каталог, но установив подпапки с разрешениями на запись, чтобы он все еще мог загружать файлы. Не в корень, а во вложенные папки. Не очень хорошо, но работает!