неділю, 23 серпня 2015 р.

Делимся файлами по ftp и http

FTP

В прошлой публикации было рассказано как шарить файлы по протоколу smb, казалось бы что ещё надо? Во-первых, может быть у вас компания не купила ни одну винду, все сидят (и, надеюсь, счастливы) на линуксах, поэтому никто самбу не ставил даже. Во-вторых, протокол FTP (File Transfer Protocol) разрабатывался как раз для передачи файлов по сети, поэтому должен быть самым быстрым в этом деле. И, конечно же, он один из самых старых протоколов (википедия говорит - 1971 год), появился ещё задолго до HTTP.
В сети есть множество информации о том как стянуть или загрузить файлы по ftp, поэтому здесь рассмотрим лишь как настроить свой ftp сервер с доступом для анонимного пользователя. Возьмем один из самых простых и легковесных ftp-серверов - vsftpd (как устанавливать приложения для своего дистрибутива вы уже должны знать). Но, ещё надо сконфигурировать его. По умолчанию, корневая папка фтп сервера (по крайней мере в debian-based дистрах) - /srv/ftp, и она имеет права на запись лишь для рута, что и должно быть по мерках безопасности. Поэтому, для того, чтобы кто-то мог залить файлы, нужно создать внутри папку и назначить ей владельца ftp:ftp

$ sudo mkdir /srv/ftp/share
$ sudo chown ftp:ftp /srv/ftp/share

 Теперь осталось дать доступ анонимному пользователю (ВНИМАНИЕ: доступ и на запись), для этого в файле /etc/vsftpd.conf раскомментируем строчки, где упоминается анонимус (и, возможно, придется дописать или изменить, всяко бывает):

anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES

При этом анонимус может также изменять структуру подпапок, поэтому будьте осторожны. Для срочной единичной передачи данных на ваш компьютер такой конфиг вполне сгодится. Также такой конфиг подойдёт, если это какой-то выделенный ftp-сервер и находится внутри организации/компании, никоим образом недоступен извне и нужен лишь для быстрого обмена файлами между сотрудниками.

HTTP

Иногда бывает нужно просто поделиться файлами и не давать возможности загружать и что-либо изменять. Никсы дарят нам возможность сделать это в мгновение ока! Достаточно лишь зайдя с терминала в нужную директорию (ту, которую хотите расшарить) и ввести команду:

$ python -m SimpleHTTPServer

В данном случае сервер будет слушать "входящие" на порту 8000. Ну а если надо другой порт (к примеру 8888):

$ python -m SimpleHTTPServer 8888

Остановить сервер можно комбинацией клавиш CTRL+C. Конечно же, у вас должен быть установлен интерпретатор python, но, обычно, он уже входит в любой дистрибутив по умолчанию. Тепер, любой пользователь может зайти через браузер, введя ваш ip адрес и порт и посмотреть что там имеется, а скачать можно также и через curl или wget. Такой способ "шаринга", как видно, очень простой и позволяет легко иметь доступ к файлам изнутри виртуальной машины или контейнера (кстати, возможно, скоро больше ваших приложений будут "контейнеризированы" и сидеть где-то в облаках, нежели на вашем личном компьютере).
Делиться файлами по http протоколу можно "на постоянной основе" и на стандартном http порту 80. Для этого надо настроить httpd сервер (для debian-based - apache httpd, или ещё проще - апач, который и показан в примере). Редактируем файл /etc/apache2/apache2.conf (или /etc/httpd/httpd.conf), копипастим шаблон из стандартного пути /var/www и добавляем алиас, по которому будем доступаться к расшаренным файлам

Alias /files /var/www/files                                                    
                                                                               
<Directory /var/www/files>                                                     
     Options Indexes FollowSymLinks                                            
     AllowOverride None                                                        
     Require all granted                                                       
</Directory>

Теперь, если вы закинете файлы в директорию /var/www/files, то с браузера на вашем же компьютере она будет доступна как localhost/files. Ну а для других пользователей вместо localhost нужно подставить ip адрес вашего компьютера.
И последнее: в дистрибутивах из SELinux, а также хитро настроенными файрволами и т.д., и т.п. вам, возможно, придется ещё немного потрудиться, чтобы делиться файлами. Но награда за труды непременно ждёт вас! Удачи!