17 дек. 2009 г.

vsftpd за пару минут

Бывает, что нужно быстро поднять фтп-шник для каких то разовых целей. А напишу-ка я здесь необходимые для этого действия. Ставить будем Very Secure FTP Daemon - vsftpd в Debian Lenny. Не потому что другие хуже, а потому что этот наиболее знаком.
Создаем нужные директории:
 mkdir -p /srv/ftp/incoming
 chown -R ftp /srv/ftp
 chmod 555 /srv/ftp
 chmod 777 /srv/ftp/incoming
Корень ftp-сервера (/srv/ftp/) должен быть недоступен для записи от имени пользователя, от которого запускается сервер. В incoming же мы собираемся писать/удалять все подряд, поэтому с правами можно не заморачиваться. Далее ставим vsftpd:
 su -
 apt-get install vsftpd
Простенький conf-файл для быстрого развертывания сервера:
listen=YES
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=ftp
xferlog_file=/var/log/vsftpd.log
ascii_upload_enable=YES
ascii_download_enable=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
anon_root=/srv/ftp
anon_umask=077
no_anon_password=YES
anon_other_write_enable=YES

Возможно, что-то из представленного и лишнее в поставленной задаче поднятия ftp минимальной конфигурации - этот пример был создан из default-ного vsftpd.conf добавлением/удалением некоторых опций. Запускаем сервер:
/etc/init.d/vsftpd start
Если все было проделано верно, можно работать.
Здесь довольное познавательное обсуждение опций свежих версий vsftpd, может пригодиться при возникновении проблем. А здесь - максимально полный man. Настоятельно рекомендуется ознакомиться с добавляемыми в конфиг опциями...иначе как бы чего не вышло. ;)

UPD:  Доложу конфиг для ftp-сервера без анонимного доступа. Доступ разрешается всем системным пользователям, перечисленным в списке /etc/vsftpd.userlist
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=002
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=NO
chown_uploads=YES
chown_username=ftp
idle_session_timeout=180
data_connection_timeout=120
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
log_ftp_protocol=YES

Содержимое  /etc/vsftpd.userlist состоит из списка (по одному на строку) имен пользователей, которым разрешен доступ к ftp-ресурсу. Остальным доступ запрещается еще до запроса пароля.