Задача:
Установить
FTP сервер, выделив публичную папку для анонимных пользователей (только
чтение) и пользовательские директории (чтение — запись).
vsftpd
vsftpd
— Very Secure FTP Daemon или Очень Защищенный FTP Демон, является одним
из самых простых в конфигурировании и наиболее часто используемым FTP
сервером. vsftpd обслуживает ftp серверы debian, redhat, ubuntu и прочих
крупных компаний. Благодаря предельной простоте настройки, поднятие ftp
сервера с помощью vsftpd редко занимает более 5 — 10 минут.
Установка vsftpd
Установите vsftpd для вашего дистрибутива:
Для Debian-based систем (Ubuntu):
apt-get install vsftpd
Для RedHat-based систем (Fedora, CentOS)
yum install vsftpd
Конфигурирование vsftpd
Конфигурирование vsftpd осуществляется редактированием файла /etc/vsftpd/vsftpd.conf. Комментариев (при минимальном знании английского) обычно достаточно, чтобы разобраться что к чему :):
anon_root — директория для анонимных пользователей (/var/ftp/ по умолчанию в большинстве дистрибутивов)
anonymous_enable — разрешить доступ анонимным пользователям?
local_enable — разрешить доступ локальным пользователям?
write_enable — разрешить запись?
anon_upload_enable — разрешить запись анонимным пользователям?
Таким
образом, можно отредактировать эти записи в конфиге следующим образом
(не стоит стирать остальные опции если вы не знаете, что они делают ;)):
#Разрешаем гостевой доступ
anonymous_enable=YES
#
# Разрешаем доступ локальным пользователям
local_enable=YES
#
# Разрешаем запись
write_enable=YES
#
# Запрещаем запись анонимным пользователям
anon_upload_enable=NO
#
# Директория по умолчанию, для гостей:
anon_root=/var/ftp
Итог:
все гости попадают в /var/ftp
все
пользователи указавшие логин и пароль входа в систему попадают в свою
домашнюю директорию, к примеру пользователь vasya попадет после логина в /home/vasya
Примечания, для систем использующих SELinux (RedHat, Fedora,…)
Следующие политики, по умолчанию выключенны:
allow_ftpd_anon_write запись анонимным пользователям
allow_ftpd_full_access полный доступ
allow_ftpd_use_cifs разрешить расшаривание сетевых-windows папок
allow_ftpd_use_nfs разрешить расшаривание NFS
ftp_home_dir разрешить пользователям доступ до домашних директорий
Для разрешения политики, используйте:
setsebool -P переменная 1
например
setsebool -P ftp_home_dir 1
разрешит доступ через ftpd к домашним директориям.
ключ -P обеспечивает сохранение настройки после перезагрузки
Для публичных папок, доступных всем пользователям для записи, следует изменить политику следующим образом:
chcon -t public_content_rw_t /var/ftp/incoming