Наша цель состоит в том, чтобы установить и настроить FTP-сервер в Debian 9 Stretch, обеспечивающий доступ как анонимного, так и локального пользователя
Рассмотрим как установить и настроить FTP-сервер с помощью vsFTPd демона.
А также рассмотрим различные конфигурации, чтобы разрешить доступ для записи или только для чтения анонимному пользователю, а также локальным пользователям.
Установка vsFTPd
Начнем с установки сервера vsFPTd и клиента FTP:
# apt install vsftpd ftp
По умолчанию сервер vsFTPd настроен так, чтобы пользователи системы могли обращаться к своим домашним каталогам с доступом только для чтения. Ниже приведен файл конфигурации vsFTPd по умолчанию /etc/vsftpd.conf:
Как уже упоминалось, указанный выше файл конфигурации предоставит доступ только для чтения любому системному пользователю, указанному в /etc/passwd файле. Используйте ftp команду и попытайтесь подключиться, используя имя пользователя и пароль любого из пользователей локальной системы:
# ftp localhost
Получите следующее
Если вам нужен доступ только для чтения от ваших локальных пользователей, то все готово.
Разрешить пользователю доступ для записи
Чтобы добавить права на запись для всех пользователей системного локального пользователя, раскомментируйте или добавьте следующий раздел write_enable=YES. Новый файл конфигурации состоит из:
Затем перезапустите ваш vsFTPd:
# systemctl restart vsftpd
Выполните новый тест как показано ниже с ftp командой, чтобы подтвердить доступ на запись:
# ftp localhost
Разрешить только конкретным пользователям
На данный момент наш FTP-сервер разрешает доступ любому пользователю системы, определенному в /etc/passwd файле. Чтобы разрешить вход в систему только определенным пользователям, мы можем включить в наш файл конфигурации следующие строки:
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
Вышеуказанное позволит включить предварительно определенный список пользователей, в котором любой пользователь, указанный в списке /etc/vsftpd.userlist(одно имя пользователя в строке), будет иметь запрещенный доступ к FTP, в то время как все остальные пользователи системы смогут войти в систему. Давайте создадим новый /etc/vsftpd.userlist список пользователей, состоящий из одного пользователя serg:
# echo serg > /etc/vsftpd.userlist
Перезапустите сервер vsFTPd:
# systemctl restart vsftpd
Выполните новый тест с ftp командой, чтобы подтвердить отказ в доступе к FTP-серверу для serg пользователя:
# ftp localhost
Однако, если вам нужно иметь возможность входить только с определенными пользователями /etc/vsftpd.userlist, добавьте следующую опцию конфигурации userlist_deny=NOв ваш файл конфигурации vsFTPd /etc/vsftpd.conf. Ниже приведен наш текущий /etc/vsftpd.confфайл конфигурации:
Разрешить доступ анонимным пользователям
На этом этапе мы также собираемся разрешить доступ только для чтения анонимным пользователям. Давайте начнем создавать новый каталог, который будет использоваться в качестве корневого каталога для анонимного пользователя, например. /var/ftp В целях тестирования мы также можем поместить произвольный файл тестирования в /var/ftp каталоге:
# mkdir /var/ftp/
# chmod 555 /var/ftp/
# chown ftp.ftp /var/ftp/
# touch /var/ftp/ANONYMOUS.TXT
Кроме того, включите следующие строки в /etc/vsftpd.conf файл конфигурации, чтобы определить анонимный домашний каталог и анонимный доступ:
anon_root=/var/ftp
anonymous_enable=YES
При желании добавьте no_anon_password=YES строку, чтобы указать vsFTPd, чтобы анонимный пользователь мог автоматически входить без пароля. Поскольку теперь мы определили список пользователей, мы также должны добавить anonymous пользователя в список:
# echo anonymous >> /etc/vsftpd.userlist
# cat /etc/vsftpd.userlist
имя_пользователя
anonymous
Как обычно, перезагрузите FTP-сервер и выполните проверку текущей конфигурации:
# systemctl restart vsftpd
Проверить анонимный вход:
# ftp localhost
И видим примерно следующее
Ниже вы можете найти наш текущий файл конфигурации vsFTPd:
Включить анонимному пользователю доступ для записи
Далее давайте разрешим анонимному пользователю загружать файлы и создавать новые каталоги и многое другое. Для этого создайте новый каталог upload в /var/ftp каталоге:
# mkdir /var/ftp/upload
# chown ftp.ftp /var/ftp/upload/
Затем добавьте следующие строки в файл конфигурации vsFTPd как указано ниже:
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
Перезагрузите ваш сервер
# systemctl restart vsftp
После перезагрузки анонимный пользователь сможет загружать файлы, создавать каталоги, переименовывать файлы:
# ftp localhost
Вывод примерно такой:
Вы можете найти наш окончательный файл конфигурации vsFTPd как указано ниже:
Сообщение об ошибке:
# ftp localhost
Вышестоящее указывает, что ваш anon_root каталог доступен для записи. Решение - сделать его доступным только для чтения. Пример:
# chmod 555 /var/ftp
Или попробуйте добавить следующую строку в файл конфигурации vsFTPd как указано ниже:
allow_writeable_chroot=YES