Пришло время организовывать файловое хранилище, как внутри сети так и снаружи. Данная статья является продолжением первой части, посвященной настройки WiFi роутера на Вашем домашнем сервере. Все жесткие диски с Вашего домашнего компьютера(кроме системного) можно перенести на сервер, поскольку скорость передачи данный колеблется в районе 10-20 мегабайт в секунду [данный параметр еще и очень сильно зависит от модели Вашего жесткого диска], да и кстати, давно уже пора для системного диска покупать SSD накопители.

FTP Server.
Существует множество ftp серверов для linux, много хороших, много плохих, но есть лучший [естественно, что это субъективное мнение, и лучший он для меня] и это vsftpd. Его мы и будем рассматривать.
Скачать его можно из стандартных репозитариев OpenSUSE, выполнив в терминале команду:
zypper in vsftpd

Теперь перейдем к описанию. Это консольный ftp server, у него нет GUI [графическая оболочка], поэтому вся настройка происходит в одном единственном конфиге, по адресу /etc/vsftpd.conf.
Вот пример рабочего конфига:
#разрешаем л��бые формы записи на FTP сервер
write_enable=YES
#разрешаем возможность отображения сообщений о переходах из папки в #папку.
dirmessage_enable=YES
#выбираем пользователя БЕЗ всяких привелегий (read-only)
nopriv_user=ftpsecure
#разрешаем локальных пользователей (локальные пользователи - это те, #которые зарегестрированы в системе, то есть на них есть учетные записи)
local_enable=YES
#запихиваем локального пользователя в chroot.
chroot_local_user=YES
#запрет анонимного входа на сервер
anonymous_enable=NO
#включаем логгирование
syslog_enable=YES
#разрешаем присоединятся по 20ому порту
connect_from_port_20=YES
#разрешаем аплоадить папки с киррилицей в названии
ascii_upload_enable=YES
#разрешаем скачивать папки с киррилицей в названии
ascii_download_enable=YES
#название PAM сервиса в системе
pam_service_name=vsftpd
#возможность работы в автономном режиме
listen=YES
#запрещаем SSL аутентификацию
ssl_enable=NO
#рейнж портов для режима PASV.
pasv_min_port=30000
pasv_max_port=30100
#привествие при заходе на ftp-server
ftpd_banner=Welcome to my ftp-server
#время, через сколько пользователя кикнут с сервера при его бездействии
idle_session_timeout=900
#максимальное количество юзеров
max_clients=10
#максимальное количество сессией с одного ip адреса
max_per_ip=3
#разрешение режима PASV(пассивный режим)
pasv_enable=YES
#маска разрешающих привелегий для локальных пользователей.
local_umask=0002

В приведенном выше конфиге нет заморочек для распределения прав доступа отдельным пользователям, отдельных папок. Всё довольно просто и лаконично, настроил один раз и пользуешься [пользуются]. Vsftpd был выбран, потому что у него лучшая система настройки прав доступа, которая подразделяется на два вида: внутренняя, системная аутентификация и внешняя, с отдельным конфигурационным файлом для распределения прав доступа, но при этом, пользователи всё также берутся из системы.

В данном примере и пользователи, и распределение прав доступа этих самых пользователей берется из системы, дополнительный конфиг-файл не используется.
image
Рисунок 1. Выставление прав
На этом собственно всё.

Samba.
Хотите всегда иметь под рукой файловое хранилище всех коллекций и всего прочего с ноутбука, с домашнего компьютера, с телефона, с планшета? Поехали.

Изначально, при стандартной установке системы OpenSUSE всё что нужно для установки и настройки samba на сервере уже предустановлено. Поэтому перейдем непосредственно к настройке. Поскольку доступ из под ОС Windows в качестве «Подключения сетевого диска» будет доступен только внутри Вашей локальной сети [для интернета есть ftp сервер, да и к тому же, вывешивать самбу в интернет крайне не безопасно, а мы же, — «ЗА СЕКЬЮРНОСТЬ!!! УРА!»] поэтому настройки будут крайне банальны и просты в понимании. Есть два [известных мне и адекватных на мой взгляд] настройки самбы, это через, всё тот самый, конфигурационный файл и при помощи утилиты — WebMin. Это дико-крутая штука, особенно для тех, кто не любит ковырять конфиги [но и здесь есть свои ньюансы]. В данной статье не будем останавливаться на средствах "для ленивых", поэтому продолжаем. Мы будем рассматривать рабочий конфиг файл. Находится он по адресу: /etc/samba/smb.conf. Вот он:
[global]
	# Указываем имя гостевого юзера.
        guest account = nobody
	# Указываем имя
        netbios name = homeserver
	# Включаем возможность прав "write"
        writeable = yes
	# Дополнительная опция, убирающая задержку.
        socket options = TCP_NODELAY IPTOS_LOWDELAY
	# При необходимости, указываем рабочую группу, где будут находится компьютеры
	#(абсолютно не обязательный параметр)
        workgroup = HOMENET
	# Выбираем интерфейсы на которые будет "прослушивать" самба.
	# (также, необязательная опция, по-умолчанию, будут прослушиваться все интерфейсы)
        interfaces = eth1 wlan0
	# Дома безопасность особо не нужна.
        security = share
        public = yes
[public]
	# Разрешаем гостя
        guest ok = yes
	# Только гость? Да.
        guest only = yes
	# Путь до публичной папки
        path = /cifs/pub
	# Не запрещаем запись.
        read only = no 
# Также, если интересует возможность доступа к CD-ROM'у, то вставьте # в конфиг самбы следующие опции:
[cdrom]
        fake oplocks = yes
        guest ok = yes
        guest only = yes
        path = /mnt/cdrom
        read only = yes

Также, дополнительную настройку можно выполнить через встроенный в YaST GUI samba.

Того пользователя, что мы указали в самом начале конфига, в данном примере это пользователь nobody, необходимо создать непосредственно в системе. Задать ему необходимые права (дома, имеет смысл поставить полные права, на создание, удаление, редактирование всех файлов и папок (т.е. права 777). Также, если Вы столкнетесь с ситуацией, когда по какой-то причине станет невозможным удаление/создание файлов в какой-либо из папок на сервере, то выполните команду:
chmod 777 -R /path

Разберем её, на всякий случай:
chmod — команда установки прав.
777 — собственно права, в буквенном обозначении означают rwx, rwx, rwx — права чтение, запись, выполнение для владельца, группы(где состоит владелец), всех.
-R — ключ рекурсии, для того чтобы команда выполнилась не только для той папки(и файлов, находящихся в ней), которую Вы указали в /path, но и для всех под-папок и файлов в них тоже.
/path — путь до папки, на которую необходимо установить права. Аналогичная команда соответствует FTP серверу, если возникли похожие проблемы. Да, и надо оговориться, что если возникают подобные проблемы, то скорей всего проблема кроется в пользователях созданных в системе, а точнее в правах, выданных на использование их домашних директорий.

rTorrent.
Полу-автоматизированный торрент клиент.
На самом деле, это обычный торрент клиент, но, возможности настройки которого, очень богаты разнообразием. Сейчас мы с Вами разберём одну очень полезную функцию данного клиента. Представьте, Вы уже настроили самбу на Вашем домашнем сервере, файловое хранилище, находящееся на сервере подключена к Вашему компьютеру как Сетевой Диск, Вы открываете Ваш сетевой диск, открываете папку torrents, там открываете папку music и перемещаете туда все торрент файлы с музыкой, которые Вы хотите скачать и… всё, ложитесь спать. На утро уже будут скачены и проверены хеши всех торрентов, что Вы туда положили (тут конечно всё зависит от того сколько торрентов Вы хотите скачать, какой у них вес и какова ширина Вашего интернет канала). Нравится? Вот и я балдею уже как пол года, от этой функции.
Давайте разбираться.
Вам надо установить rtorrent, выполняем следующую команду в терминале:
zypper in rtorrent

После того, как Вы скачали и установили торрент-клиент rtorrent, необходимо произвести настройку клиента. Настройка программы осуществляется при помощи конфигурационного файла .rtorrent.rc, размещаемого в домашнем каталоге пользователя. (По умолчанию файл .rtorrent.rc отсутствует. Его нужно создавать самостоятельно. Привожу пример с подробными комментариями рабочего конфига:
#обмен пирами? Да!
peer_exchange = yes

#минимальное число пиров на торрент
min_peers = 1

#максимальное число пиров на торрент
max_peers = 1000

#максимальная скорость загрузки
download_rate = 0

#максимальная скорость отдачи. 1 - не ограничена
upload_rate = 0

#каталог для сохранения закачек или откуда будут сидироваться торренты.
directory = /files/torrents

#каталог куда будет сохраняться состояние торрентов.
#Здесь, в этом примере, они сохраняются в папку  session
session = /files/torrents/session/

#rtorrent каждые 5 секунд проверяет этот каталог на новые *.torrent #файлы
#и если они есть то ставит их на закачку
#schedule = watch_directory,5,5,load_start=/home/user/torrent_auto_load/

#проверяет каталоги на новые *.torrent файлы и сохраняет закачки в #соответствующие папки
schedule = watch_directory,5,5,"load_start=/files/torrents/music/*.torrent,d.set_directory=/files/music"
schedule = watch_directory_2,5,5,"load_start=/files/torrents/video/*.torrent,d.set_directory=/files/video"
schedule = watch_directory_3,5,5,"load_start=/files/torrents/video/serial/*.torrent,d.set_directory=/files/video/serial"
schedule = watch_directory_4,5,5,"load_start=/files/torrents/progs/*.torrent,d.set_directory=/files/progs"
schedule = watch_directory_5,5,5,"load_start=/files/torrents/games/*.torrent,d.set_directory=/files/games"
schedule = watch_directory_6,5,5,"load_start=/files/torrents/unsorted/*.torrent,d.set_directory=/files/unsorted"
schedule = watch_directory_7,5,5,"load_start=/files/torrents/doc/*.torrent,d.set_directory=/files/doc"
schedule = watch_directory_8,5,5,"load_start=/files/torrents/doc/books/*.torrent,d.set_directory=/files/doc/books"
#Удаление торрент-файлов из директории music(потому что в данном #примере, папка music идет как "directory"(#1), которые уже скачаны.
schedule = untied_directory,7,5,remove_untied=
#номер порта (или нескольких портов) который открывает клиент для #обмена данными
port_range = 40890-40890

#случайный выбор порта для обмена данными. В данном случае он #отключён
port_random = no

#проверять хэш торрента после закачки
check_hash = yes

#сохранять сессию
session_save = yes

#принимать зашифрованные входящие соединения, устанавливать #незашифрованные исходящие соединения,
#если возвращает ошибку, повторять с шифрованием, предпочитать #открытый текст после установления
#зашифрованного соединения
encryption = allow_incoming,enable_retry,prefer_plaintext

#использовать udp
use_udp_trackers = yes


image
Рисунок 2. Главное окно программы rTorrent

Собственно и все. Далее хитрый приём, — открываем консоль и пишем(можно и по ssh зайти на сервер):
screen rtorrent
Далее, в терминале откроется торрент-клиент, там же Вы его можете настроить и отладить дополнительно. Теперь нажимаем волшебные комбинации клавиш Ctrl+A затем Ctrl+D и консоль радостно Вас оповестит, что:
[detached]

image
Рисунок 3. «Заскринивание» процесса программы rTorrent.

Это говорит о том, что процесс Вашего торрент-клиента «закринин», то есть выполняется, но его при этом не видно. Для тех, адептов, кому всегда, всё интересно, может прочесть вот здесь про данную утилиту обременять голову такими вещ��ми (хотя, они очень интересные и познавательные, и применяются часто) принудительно я не хочу.
Если Вам понадобилось заного открыть клиент, пишем:
screen -r

ВАЖНО: Если Вы хотите запускать торрент-клиент под рутом(root, т.е. через команду sudo) то, необходимо конфиг файл создавать в корневом каталоге пользователя root, а также, screen -r необходимо выполнять также, под тем же пользователем, под которым Вы ее «заскринили».
Таким образом, у Вас в фоне всегда будет висеть торрент-клиент, который будет качать и раздавать ровно столько, сколько будет работать Ваш сервер.


На этой «важной» ноте, я хочу закончить данную статью. Спасибо за внимание, и да, пользуйтесь поисковиком Google, он молодец!

Если ошибся топиком, подскажите куда перенести.