субота, 4 червня 2011 р.

Домашний сервер на Ubuntu Server (часть 4). FTP-сервер

Установка и настройка SSH
Установка и настройка Transmission-daemon
Настройка Samba

Продолжаем обустраивать домашний сервер. Папки на сервере расшарили и можно по сети обмениваться файлами. Удобно и быстро. Но файлы и папки доступны только в локальной сети, т. е. физически мне надо быть подключенным к серверу у себя дома. А если мне срочно что-то понадобиться вне дома? На этот случай поднимем FTP-сервер. И будет доступ к своим файлам из любой точки планеты, где есть интернет. Да еще и можно с друзьями обмениваться файлами не пользуясь файлообменниками.

В качестве FTP-сервера я выбрал vsftpd. Разработчик позиционирует его как very security, т. е. очень безопасный. Безопасность лишней никогда не бывает.

sudo apt-get install vsftpd

Настройки vsftpd сервера находятся в файле /etc/vsftpd.conf

Первым делом сделаем резервную копию

sudo cp /etc/vsftpd.conf/  etc/vsftpd.conf_original

А потом очистим содержимое файла

cat /dev/null > /etc/vsftpd.conf

И откроем его для редактирования

sudo nano /etc/vsftpd.conf

В моем случае сервер будет работать следующим образом. Для анонимных пользователей разрешен доступ на скачивание из папки /home/ftp. Эта папка является домашней для пользователя ftp  (он же anonymous). Любое изменение файлов, включая загрузку, запрещено. Подключаться анонимусы будут без пароля.

Анонимный доступ я открыл для обмена файлами с друзьями. А для себя сделал следующие настройки. На сервере есть локальные пользователи. Отрываем для них доступ с полными правами в определенную папку, т.е. файлы и папки можно не только скачивать, но и загружать, переименовывать, удалять и т.д.

Настройки самого сервера опишу в примере своего конфиг файла. Файл настроек vsftpd сервера имеет следующую структуру: опция=параметр. Параметр может быть значением YES или NO, числом, строковым значением. Строки начинающиеся с символа # являются комментариями и на настройки не влияют.

Пример настройки:

#vsftpd будет загружаться в автономном режиме и сам позаботится о прослушивании и перехвате входящих соединений. inetd использоваться не будет
listen=YES
#работать в фоновом режиме
background=YES
#если на сервере несколько сетевых интерфейсов, можно прямо прописать какой из них прослушивать
listen_address=192.168.1.100
#максимальное количество подключений
max_clients=20
#максимальное количество подключений с одного ip
max_per_ip=10
#
#разрешить доступ анонимным пользователям
anonymous_enable=YES
#папка анонимусов
anon_root=/home/ftp
#не спрашивать пароль
no_anon_password=YES
#
#разрешить доступ локальным пользователям
local_enable=YES
#папка локальных пользователей
local_root=/media/files
#
#включить команду "async ABOR" для "плохих" клиентов
async_abor_enable=YES
#разрешить изменение файлов
write_enable=YES
#
#скачивать и загружать данные в режиме ASCII
#ascii_download_enable=YES
#ascii_upload_enable=YES
#
#вся пользовательская и груповая информация в списке директорий, выводится как "ftp"
hide_ids=YES
#детальный отчет о скачиваниях и загрузках (пишется в /var/log/vsftpd.log)
xferlog_enable=YES
#активируем 20-й порт
connect_from_port_20=YES
#приветствие при подключении
ftpd_banner=Welcome to home FTP server.
#пустая папка "для безопасности"
secure_chroot_dir=/var/run/vsftpd/empty
#имя сервиса PAM, который будет использоваться vsftp
pam_service_name=passwd

Так выглядит мой файл конфигурации vsftpd сервера.

Запускаем ftp сервер

sudo vsftpd

У меня все заработало сразу же, если у вас не подключается, проверьте еще раз настройки. При запуске возможно некоторые ошибки. Например:
500 OOPS: config file not owned by correct user – измените владельца файлов конфигураций пользователей на roor:root

500 OOPS: vsftpd: refusing to run with writable anonymous root – изменить права каталога указаного в anon_root на 555

425 Security: bad IP connecting – добавить опцию pasv_promiscuous=YES, хотя добавление этой опции является нежелательным.

Подключаемся:

user@user-pc:~$ ftp 192.168.1.100
Connected to 192.168.1.100.
220 Welcome to user`s FTP server.
Name (192.168.1.100:user): ftp
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Чтобы можно было подключаться из интернета необходимо, чтобы сервер имел внешний ip-адрес, либо можно воспользоваться сервисами вроде DynDNS.org. Об этом я писал в статье Удаленный доступ без прямого ip.

Немає коментарів:

Дописати коментар

HyperComments for Blogger

comments powered by HyperComments