Встановлення та налаштування FTP-сервера в Linux. Налаштування та використання FTP-сервера в Ubuntu Linux Встановлення FTP-сервера в Ubuntu

💖 Подобається?Поділися з друзями посиланням

FTP або File Transfer Protocol - це досить древній, але в той же час надійний і перевірений протокол вивантаження файлів на сервер або їх скачування. Іноді цей протокол застосовується веб-майстрами для керування файлами або організації сховища даних.

У цій статті ми розглянемо, як виконується установка FTP на Ubuntu 16.04, як налаштувати всі необхідні компоненти, у тому числі захищене з'єднання. Ми будемо використовувати FTP-сервер VSFTPD або Very Secure FTP Daemon, який забезпечує найнадійніший захист від уразливостей.

Програма доступна з офіційних репозиторіїв, тому встановлення FTP на Ubuntu Server 16.04 не повинно викликати проблем. Спочатку оновіть список пакетів у репозиторіях, а потім встановіть саму програму:

sudo apt update
$ sudo apt install vsftpd

Коли установку буде завершено, вам необхідно увімкнути сервіс vsftpd, оскільки він не буде запущений за умовчанням, а також додати службу до автозавантаження:

sudo systemctl start vsftpd
$ sudo systemctl enable vsftpd

Якщо у вас встановлено фаєрвол ufw, а така ситуація виникає, коли ви намагаєтеся встановити FTP на Ubuntu Server, потрібно відкрити порти 20 та 21 для нормальної роботи. Щоб це зробити, виконайте такі команди:

sudo ufw allow 20/tcp
$ sudo ufw allow 21/tcp
$ sudo ufw status

Установка FTP Ubuntu завершена, але тепер вам залишилося налаштувати все необхідне для забезпечення безпечної роботи. Ніколи не використовуйте FTP-сервер з налаштуваннями за промовчанням у виробничих мережах, це небезпечно.

Налаштування FTP Ubuntu

Тепер перейдемо до налаштування. Нам потрібно змінити лише кілька параметрів, щоб повністю захистити ваш FTP-сервер. Спочатку ми розглянемо найочевидніші налаштування: відключення анонімного входу тощо. Спочатку необхідно скопіювати оригінальний файл налаштувань, щоб у разі проблем повернути все як було:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Потім відкрийте файл у редакторі:

sudo vi /etc/vsftpd.conf

Потім додайте такі настройки. Вам потрібно буде знайти та змінити значення вказаних рядків, додавати нові, якщо вони вже є, не варто. Спочатку відключаємо анонімний вхід:

anonymous_enable = NO

Дозволяється використовувати імена локальних користувачів для входу:

write_enable = YES

Встановимо значення umaskдля нових файлів, створюваних за FTP:

local_umask = 022

Включаємо повідомлення про необхідність вибрати каталог після реєстрації:

dirmessage_enable = YES

Записувати в лог файл усі транзакції з передачі файлів та використовувати стандартний формат лога:

xferlog_enable = YES
xferlog_std_format=YES

Використовувати порт 20 для передачі даних замість випадкового, це потрібно для нормальної роботи фаєрволу:

connect_from_port_20 = YES

Вказуємо, що слід очікувати вхідних з'єднань:

Використати PAM-сервіс vsftpd:

pam_service_name=vsftpd

На завершення дозволимо аутентифікацію лише користувачів, перерахованих у файлі userlist:

userlist_enable = YES

Вказуємо файл із нашими віртуальними користувачами:

userlist_file=/etc/vsftpd.userlist

За замовчуванням таким користувачам заборонено вхід до системи, але ми хочемо зовсім зворотне, тому додайте такий рядок:

userlist_deny=NO

При вході користувачів на сервер FTP, вони можуть працювати тільки в кореневому каталозі FTP. Якщо ви хочете, щоб користувачі були обмежені лише своєю домашньою папкою, необхідно розкоментувати ці рядки:

chroot_local_user = YES
allow_writeable_chroot = YES

Перший рядок вказує, що потрібно розмістити користувача в ізольованому домашньому каталозі, а другий, що йому можна дозволити запис до цього каталогу. Налаштування FTP Ubuntu майже завершено, збережіть зміни в конфігураційному файлі та перезапустіть vsftpd:

sudo systemctl restart vsftpd

Тестування vsftpd

Сервер готовий, але система налаштована ще повністю. Спочатку створимо нашого тестового користувача за допомогою useradd:

sudo useradd -m -c "Test User" -s /bin/bash testuser
$ sudo passwd testuser

Оскільки ми хочемо підключатися від його імені до FTP-сервера, нам потрібно додати його в vsftpd.userlist:

echo "testuser" | sudo tee -a /etc/vsftpd.userlist
$cat /etc/vsftpd.userlist

Тепер саме час підключиться до нашого FTP-сервера та перевірити, як там все працює. Спробуємо увійти від імені анонімного користувача:

У нас нічого не вийде. Тепер спробуємо увійти від імені нашого тестового користувача, і все запрацює як слід.

Зверніть увагу, що небезпечно давати користувачам доступ до запису до їхньої домашньої папки. Робіть це тільки якщо впевнені в тому, що це необхідно і безпечно.

Налаштування домашніх папок користувачів

Щоб хоч якось уникнути проблем з безпекою, ви можете використовувати іншу папку замість домашньої для надання її користувачеві. Спочатку створимо таку папку для нашого користувача:

sudo mkdir -p /home/testuser/ftp/files

Приберемо право на запис для папки ftp:

sudo chown nobody:nogroup /home/testuser/ftp
$ sudo chmod a-w /home/testuser/ftp

Потім дайте необхідні повноваження користувачеві на запис у підпапку.

sudo chown -R testuser:testuser /home/testuser/ftp/files
$ sudo chmod -R 0770 /home/testuser/ftp/files/

Тепер повернемося до файлу конфігурації vsftpd.conf. Спочатку закоментуйте рядок:

allow_writeable_chroot = YES

Тепер додайте такі рядки:

user_sub_token = $USER
local_root=/home/$USER/ftp

Перша з них додає змінну $USER, в якій міститься ім'я користувача, а друга задає кореневу папку для кожного користувача. Залишилось знову перезапустити FTP-сервер:

sudo systemctl restart vsftpd

Тепер ви можете увійти від імені цього користувача і побачите, що зараз використовується вказана нами папка.

Налаштування захищеного з'єднання

Установка FTP на Ubuntu 16.04 завершена, але в наш час небезпечно використовувати відкриту передачу даних через мережу. Все, що можливо, необхідно шифрувати. Тому ми розглянемо, як настроїти захищене з'єднання для vsftpd. Спочатку створимо папку і згенеруємо сам сертифікат, який використовуватимемо:

sudo mkdir /etc/ssl/private
$ sudo openssl req -x509 -nodes -days 720 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/private/vsftpd.pem

Потім потрібно дозволити доступ до портів захищеного FTP з фаєрволе UFW:

sudo ufw allow 990/tcp
$ sudo ufw allow 40000:50000/tcp
$ sudo ufw status

І залишилося внести кілька редагування в налаштування самого FTP-сервера. Нам потрібно увімкнути ssl_enableта вимкнути підтримку шифрування sslv2і sslv3, залишаємо тільки tlsv1:

ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key

Забороніть вхід анонімних користувачів SSL:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

Тепер встановимо найскладніший шифр SSL:

ssl_ciphers=HIGH

І налаштуємо діапазон портів для передачі даних:

pasv_min_port=40000
pasv_max_port=50000

Залишилось перезавантажити наш сервіс:

sudo systemctl restart vsftpd

Тепер тестуємо, що в нас вийшло:

Тепер усі дані передаватимуться зашифрованим з'єднанням. Установку FTP-сервера Ubuntu завершено.

Висновки

У цій статті ми розглянули, як виконується установка FTP на Ubuntu Server 16.04, а також як налаштувати FTP для максимально безпечної роботи, включаючи налаштування роботи з SSL. Якщо у вас залишилися питання, запитуйте у коментарях!

У цій статті ми розглянемо встановлення та налаштування FTP сервера vsftpd на веб-сервер під керуванням операційної системи Ubuntu Server 18.04.

FTP (File Transfer Protocol) - це протокол передачі файлів через мережу. Стандартні порти: 21/TCP для команд, 20/TCP для даних. Порти для пасивного підключення налаштовуються додатково у конфігураційному файлі.

Встановлення

Для початку оновимо індекси пакетів програм:

sudo apt update

Тепер встановлюємо сам сервер FTP:

sudo apt install vsftpd

Налаштування

Відкриваємо конфігураційний файл для редагування:

sudo nano /etc/vsftpd.conf

Опускаючи коментарі, його зміст має бути наступним:

listen=YES
local_enable=YES
chroot_local_user=YES
check_shell=NO
write_enable=YES
xferlog_enable=YES
chown_uploads=YES
chown_username=nobody
anonymous_enable=NO
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100

Конфігураційний файл

Перезапускаємо FTP сервер:

sudo service vsftpd restart

Створюємо користувача FTP:

sudo adduser ftpuser

Створюємо каталог для монтування каталогу сайту в домашній каталог нашого користувача:

sudo mkdir /home/ftpuser/site

Монтуємо:

sudo mount --bind /var/www /home/ftpuser/site

Монтування каталогів

Тепер у /home/ftpuser/site відображатимуться файли, які лежать у /var/www. Зверніть увагу, що монтування зберігається до перезавантаження сервера. Після перезавантаження команду потрібно буде повторити.

sudo chown www-data:ftpuser /var/www/ -R
sudo find /var/www-type d-exec chmod 775()\;
sudo find /var/www-type f-exec chmod 664()\;

Для того щоб користувач міг підключатися по FTP потрібно включити заборону на запис в корінь домашнього каталогу:

sudo chmod a-w /home/ftpuser/

Тепер нам необхідно налаштувати брандмауер для підключення:

sudo ufw allow in 20/tcp

sudo ufw allow in 21/tcp

sudo ufw allow in 60000:60100/tcp

Перевіряємо правила:

sudo ufw status

Перевірка правил

Всі. Пробуємо підключитися через FTP.

Підключення FTP

Як бачимо, підключення працює. У змонтованому каталозі є файли нашого тестового сайту.

Висновки

Встановлення сервера FTP на веб-сервер завершено. Тепер можна завантажувати файли сайту на сервер та робити резервні копії. Якщо залишилися питання на цю тему, пишіть у коментарях.

Час від часу у кожного системного адміністратора виникає потреба у FTP-сервері, найчастіше це пов'язано з необхідністю забезпечити обмін інформацією в автоматичному режимі між програмами, наприклад, при автообміні розподіленої інформаційної бази 1С, або для доступу до файлів на веб-сервері. Сьогодні ми розповімо, як менше, ніж за півгодини створити такий сервер на платформі Ubuntu.

Але спочатку трохи теорії. Протокол FTP (File Transfer Protocol) призначений, як випливає з назви, для передачі файлів і з'явився в 1971 році, але незважаючи на свій похилий вік, продовжує широко використовуватися до цих пір. Хоча сьогодні його використання носить частіше технічний характер, для доступу кінцевих користувачів до даних зазвичай використовують браузер та протокол HTTP. До переваг FTP можна віднести можливість докачування файлу при обриві зв'язку і можливість однаково легко зчитувати файли, так і записувати їх. Але є й недоліки, найсерйозніший - низька безпека, тому цьому питанню слід приділити найпильнішу увагу.

FTP, як і PPTP, використовує різні з'єднання передачі команд і передачі. При ініціації з'єднання клієнт передає керуючі команди на порт 21 сервера, який в свою чергу встановлює вихідне з'єднання передачі даних на 20 порту, порт з боку клієнта визначається в результаті узгодження. Однак під час знаходження клієнта за NAT з'єднання подібним чином встановити не вдасться, тому було розроблено додатковий режим FTP passive mode (пасивний режим), коли з'єднання передачі даних встановлює не сервер, а клієнт, проте з параметрами, вказаними сервером. Ці моменти слід враховувати при форвардингу FTP та налаштуванні мережевого фільтра.

Для нашого сервера ми будемо використовувати vsftpd- простий, швидкий та безпечний FTP сервер. Оскільки він обслуговуватиме як зовнішню, і внутрішню мережі, має сенс додати цю роль нашому . Установка сервера дуже проста:

Apt-get install vsftpd

Налаштування сервера здійснюється через конфігураційний файл /etc/vsftpd.confвін має просту структуру, добре прокоментований і дозволяє налаштувати сервер без будь-якої інструкції за наявності мінімальних знань. Розглянемо основні параметри.

Сервер може бути запущений постійно, як служба або стартувати при необхідності, нам більше підходить перший варіант:

Listen=YES

Ця опція має взаємовиключний запис, який слід привести до вигляду:

Listen_ipv6=NO

Дозволимо вхід лише локальним користувачам:

Anonymous_enable=NO
local_enable=YES

Дозволимо користувачам записувати файли та вкажемо серверу автоматично виставляти потрібні права (755 на папки та 644 на файли):

Write_enable=YES
local_umask=022

Якщо потрібно встановити інший набір прав: 775 і 664, то umask повинен дорівнювати 002.

За промовчанням сервер використовує час GMT, щоб файли встановлювали час вашого часового поясу, використовуйте опцію:

Use_localtime=YES

Включимо лог файлів, що завантажуються і завантажуються:

Xferlog_enable=YES

Дозволимо серверу встановлювати з'єднання передачі даних на порт 20 (активний режим):

Connect_from_port_20=YES

Наступні опції задають місце та формат зберігання логів:

Xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

Задамо таймівти сесії:

Idle_session_timeout=600
data_connection_timeout=120

Також з метою безпеки ізолюємо користувача в його домашньому каталозі та відразу дозволимо запис у його корінь:

Chroot_local_user=YES
allow_writeable_chroot=YES

Для коректної роботи з текстовими даними можна увімкнути підтримку ASCII, це дозволить при передачі текстового файлу з Windows системи UNIX (Linux) коректно замінити символи перенесення рядка з CR+LF на LF для коректного відображення вмісту і виконати зворотне перетворення при передачі його назад.

Ascii_upload_enable=YES
ascii_download_enable=YES

Можна увімкнути лише одну опцію, для закачування або завантаження. Зверніть увагу, що під час передачі бінарного файлу в режимі ASCII останній може бути пошкоджений.

Досить цікава опція:

Ls_recurse_enable=YES

Вона дозволяє рекурсивний перегляд каталогів, з одного боку це зручно, з іншого, здатне викликати велике навантаження на сервер, якщо, наприклад, отримати листинг директорії, що містить велику кількість файлів і каталогів.

Всі інші опції залишаємо за замовчуванням, хоча можете відредагувати вітання сервера, написавши там все, що вам подобається:

Ftpd_banner=Welcome to Roga i Kopyta LLC FTP

В кінці конфігураційного файлу задамо налаштування для пасивного режиму, рекомендується явно встановити порти, щоб була можливість вказати їх при форвардингу, якщо сервер стоїть за NAT або в правилах брандмауера:

Pasv_enable=YES
pasv_min_port=62000
pasv_max_port=62999

Перезапускаємо сервер (це потрібно робити щоразу після внесення змін до конфігурації):

Service vsftpd restart

і пробуємо підключитися будь-яким FTP-клієнтом, використовуючи облікові дані існуючого користувача. Ми повинні потрапити до його домашньої директорії та бути ізольовані в ній.

У разі появи помилки, пов'язаної з некоректною роботою vsftpd та системи безпеки seccomp:

500 OOPS: prctl PR_SET_SECCOMP failed

додайте у файл недокументовану опцію:

Seccomp_sandbox=NO

Однак пам'ятайте, що FTP є небезпечним протоколом, тому пускати на сервер будь-якого локального користувача, як це зроблено зараз, не найкращий варіант. Щоб уникнути такої ситуації, vsftpd має вбудований механізм контролю користувачів. Додамо до конфігураційного файлу опцію:

Userlist_enable=YES

і створимо файл списку користувачів:

Touch /etc/vsftpd.user_list

Типово vsftpd забороняєдоступ до сервера користувачам, зазначеним у цьому списку до введення пароля, тобто. реалізує принцип дозволено всім, кому не заборонено. Але краще реалізувати інший підхід: заборонено всім, кому не дозволено. Тобто. дозволятидоступ лише вказаним користувачам. Для цього додамо опцію:

Userlist_deny=NO

Тепер доступ до FTP-сервера будуть мати лише явно вказані користувачі, їх слід вказувати в vsftpd.user_listпо одному в рядок, наприклад:

Ivanov
petrov

Якщо не вказано інше, то підключившись FTP користувачі потрапляють у свій домашній каталог. Це не завжди зручно, часто потрібно перенаправляти їх до іншої директорії. Якщо це спільна для всіх папка, скажімо /var/ftp, можна задати опцію:

Local_root=/var/ftp

Яка перенаправить всіх користувачів у вказаний каталог та ізолює їх там.

Це найпростіша ситуація, реальні завдання зазвичай складніші, припустимо нам треба встановити користувачеві Іванову як кореневу директорію /var/www/example1.com, а Петрову /var/www/example2.comщоб кожен з них працював зі своєю папкою. Для цих цілей можна використовувати ще одну можливість vsftpd - налаштування користувача, які перекривають налаштування основного конфігураційного файлу.

Для цього додамо опцію:

User_config_dir=/etc/vsftpd_user_conf

Потім створимо саму директорію

Mkdir /etc/vsftpd_user_conf

Щоб задати користувачеві власні налаштування в даній директорії, слід створити файл з ім'ям користувача та додати до нього необхідні опції. Зміни використовуються без перезапуску FTP-сервера при наступному підключенні клієнта.

Створимо файл із налаштуваннями для Іванова:

Tocuh /etc/vsftpd_user_conf/ivanov

і внесемо до нього опцію:

Local_root=/var/www/example1.com

При наступному підключенні коренева директорія користувача зміниться на вказану. Також у цьому файлі ми можемо задавати будь-які персональні опції, наприклад, інший umaskабо права на доступ до файлів. Однак ми не можемо використовувати глобальні налаштування: опції підключення, логування, автентифікації, вони будуть просто ігноруватися.

Якщо вам потрібно приховати реальних власників файлів і папок, можна використовувати опцію:

Hide_ids=YES

У цьому випадку замість реальних власників та груп буде вказано ftp:ftp, це може бути корисним у разі публічного сервера або наявності у списку користувачів сторонніх осіб, яким ви не бажаєте розкривати реальні імена користувачів вашої системи.

Як бачимо, ми справді створили робочий FTP-сервер менш ніж за півгодини.

Протокол передачі файлів (FTP) - це протокол TCP для передачі файлів між комп'ютерами. У минулому він використовувався також для завантаження [файлів в інтернеті], але, оскільки цей метод не використовує шифрування, дані користувача як і вміст файлів передаються у відкриту і легко перехоплюються. Тому, якщо ви шукаєте спосіб безпечно передавати та завантажувати файли, краще зверніться до статті по OpenSSH у розділі Віддалене адміністрування .

FTP працює на основі моделі клієнт/сервер. Серверний компонент називається сервісом FTP. Він постійно слухає FTP запити від віддалених клієнтів. При отриманні запиту він керує входом та встановленням з'єднання. Протягом сесії він виконує будь-які команди, передані клієнтом FTP.

vsftpd - встановлення FTP сервера

vsftpd- це сервіс FTP, доступний в Ubuntu. Його легко встановлювати, налаштовувати та підтримувати. Для встановлення vsftpd ви можете виконати таку команду:

Sudo apt install vsftpd

Для запуску сервісу потрібно додати його до автозавантаження. Починаючи з версії Ubuntu 15.04, використовується Systemd , тому для додавання vsftpd в автозапуск треба ввести такі команди:

Sudo systemctl start vsftpd sudo systemctl enable vsftpd

У Ubuntu Server може використовуватися фаєрвол ufw. Тоді вам потрібно дозволити порти 20 і 21

Sudo ufw allow 20/tcp sudo ufw allow 21/tcp

Конфігураційний файл містить багато установок. Інформація щодо кожного параметра доступна в цьому ж файлі. В якості альтернативи ви можете переглянути системний посібник з команди

Man 5 vsftpd.conf

для уточнення деталей за кожним параметром.

Доступ до FTP сервера може бути організований двома способами:

У анонімний режимвіддалений клієнт може отримати доступ до FTP сервера, використовуючи обліковий запис користувача за умовчанням з ім'ям «anonymous» або «ftp» і надіславши адресу email як пароль. У авторизованому режимікористувач повинен мати облікове ім'я та пароль. Цей останній варіант є вкрай небезпечним і не повинен використовуватися за винятком спеціальних обставин. Якщо ви хочете передавати файли безпечно, дивіться SFTP у розділі сервера OpenSSH. Користувальницький доступ до каталогів і файлів сервера FTP залежить від прав доступу користувача, вказаного при вході. Як правило, сервіс FTP приховує кореневий каталог сервера FTP, підмінюючи його на домашній каталог FTP. Це приховує корінь файлової системи від віддалених сесій.

Налаштування анонімного доступу до FTP

Налаштування vsftpd за промовчанням не дозволяє анонімне завантаження. Якщо ви хочете дозволити анонімне завантаження, змініть у /etc/vsftpd.conf наступне:

Anonymous_enable=YES

У процесі встановлення створюється користувач ftp із домашнім каталогом /srv/ftp. Це каталог за промовчанням для FTP.

Якщо ви бажаєте змінити його розташування, наприклад, на /srv/files/ftp, просто створіть новий каталог та змініть домашній каталог користувача ftp:

Sudo mkdir /srv/files/ftp sudo usermod -d /srv/files/ftp ftp

Після змін перезапустіть vsftpd:

Під кінець скопіюйте всі файли та каталоги, які ви хочете зробити доступними для анонімного FTP /srv/files/ftp (або /srv/ftp, якщо ви хочете залишити налаштування за замовчуванням).

За замовчуванням анонімний користувач не має можливості завантажувати файли на сервер FTP. Для зміни цього налаштування приберіть коментар на наступному рядку та перезапустіть vsftpd:

Anon_upload_enable=YES

Дозвіл анонімному користувачеві завантажувати файли може бути серйозною загрозою безпеці. Краще не дозволяти анонімне завантаження файлів на сервери з прямим доступом з Інтернету.

Налаштування авторизованого доступу FTP

Перш ніж вносити будь-які зміни до конфігураційного файлу, рекомендується скопіювати зразок для можливості відкату змін без переустановки пакету sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Для аутентифікації локальних користувачів треба розкоментувати рядок

Local_enable=YES

За промовчанням vsftpd налаштований на автентифікацію системних користувачів із можливістю отримувати файли. Якщо ви хочете користувачам дозволити завантажувати файли, змініть /etc/vsftpd.conf:

Write_enable=YES

після чого перезавантажте vsftpd:

Sudo service vsftpd restart

Тепер при вході системних користувачів по FTP вони потраплятимуть у свої домашні каталоги, де зможуть завантажувати, завантажувати [файли], створювати каталоги тощо.

Захист FTP

Обмеження користувачів

У /etc/vsftpd.conf існують опції, що допомагають зробити vsftpd безпечнішим. Наприклад, ця опція дозволяє помістити локального користувача в chroot() «ув'язнення», вище якого (по дереву каталогів) він не зможе піднятися.

Chroot_local_user=YES

Ви також можете визначити список користувачів, які мають доступ тільки до домашнього каталогу:

Chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list

Після зняття коментарів із цих опцій, створіть /etc/vsftpd.chroot_list, що містить список користувачів по одному на рядок. Потім перезапустіть vsftpd:

Sudo service vsftpd restart

Якщо ви зняли коментарі з усіх трьох рядків, то користувачі зі списку не будуть обмежені своїми домашніми каталогами, на відміну від користувачів, що не увійшли до списку.

Аналогічно файл /etc/ftpusers містить список користувачів, яким заборонено доступ до FTP . За умовчанням він включає root, daemon, nobody і т.п. Щоб заборонити доступ до FTP для додаткових користувачів, просто додайте їх до цього списку.

Якщо під час спроби підключення ви бачите помилку :

Відповідь: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()

то це означає, що локальний користувач має доступ на запис у домашній каталог, чого не повинно бути. Способів вирішення цієї помилки кілька:

    Заборонити запис до домашнього каталогу локальному користувачеві (підходить не всім і не завжди)

sudo chmod a-w /home/user/ allow_writeable_chroot=YES

    Прописати /home каталогом, куди потраплятимуть локальні користувачі після входу на сервер FTP. Тоді кожен з них матиме можливість писати лише до свого домашнього каталогу

local_root=/home

Шифрування

FTP може бути зашифрованим під час використання FTPS. На відміну від SFTP, FTPS- це FTP поверх SSL. SFTP- це сесія, подібна до FTP, по зашифрованому SSH з'єднанню. Основна відмінність полягає в тому, що користувачі SFTP повинні мати обліковий запис із власним оточенням (shell account) замість оболонки nologin. Надання всім користувачам доступу до оболонки може виявитися не найкращим рішенням для деяких систем, таких як веб-сервер загального доступу. Однак є можливість обмежити такі облікові записи лише SFTP та заборонити взаємодію з оболонкою. Дивіться розділ OpenSSH для додаткової інформації.

Для налаштування FTPS, додайте /etc/vsftpd.conf до кінця файлу наступне:

Ssl_enable=Yes

Також зверніть увагу на опції сертифіката та ключа:

Rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

За замовчуванням ці опції встановлені у значення, надані пакетом ssl-cert. Для робочого середовища вони повинні бути замінені на сертифікат та ключ, створені для певного комп'ютера. Для отримання додаткової інформації дивіться розділ Сертифікати.

Тепер перевантажте vsftpd і неанонімні користувачі будуть використовувати FTPS:

Sudo service restart vsftpd

Щоб дозволити користувачам з оболонкою /usr/sbin/nologin отримати доступ до FTP , але не надавати доступ до shell, відредагуйте /etc/shells, додавши до оболонки nologin:

# /etc/shells: valid login shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh / usr/bin/esh /bin/dash /bin/bash /bin/rbash /usr/bin/screen /usr/sbin/nologin

Це необхідно, оскільки за умовчанням vsftpd використовує авторизацію PAM, а файл налаштувань /etc/pam.d/vsftpd містить:

Auth required pam_shells.so

Модуль PAM shellsобмежує доступ до оболонок, наведених у файлі /etc/shells.

Найбільш популярні FTP клієнти можуть бути налаштовані на використання FTPS. FTP клієнт командного рядка lftp також може використовувати FTPS.

Настав час організовувати файлове сховище, як усередині мережі, так і зовні. Ця стаття є продовженням першої частини, присвяченої налаштуванню 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_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 #максимальна кількість cli ip адреси max_per_ip=3 #дозвіл режиму PASV(пасивний режим) pasv_enable=YES #маска дозволяючих привілеїв для локальних користувачів. local_umask=0002
У наведеному вище конфізі немає проблем розподілу прав доступу окремим користувачам, окремих папок. Все досить просто і лаконічно, налаштував один раз і користуєшся. Vsftpd був обраний, тому що у нього найкраща система налаштування прав доступу, яка поділяється на два види: внутрішня, системна автентифікація та зовнішня, з окремим конфігураційним файлом для розподілу прав доступу, але при цьому користувачі також беруться з системи.

У цьому прикладі і користувачі, і розподіл прав доступу цих користувачів береться з системи, додатковий конфіг-файл не використовується.

Малюнок 1. Виставлення прав
На цьому, власне, все.

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

Спочатку, при стандартній установці системи OpenSUSE все, що потрібно для встановлення та налаштування samba на сервері вже встановлено. Тому перейдемо безпосередньо до настроювання. Оскільки доступ з під ОС Windows як «Підключення мережного диска» буде доступний лише всередині Вашої локальної мережі [для інтернету є ftp сервер, та й до того ж, вивішувати самбу в інтернет вкрай не безпечно, а ми ж, – «ЗА СЕК'ЮРНІСТЬ! !! УРА!»] тому налаштування будуть вкрай банальні та прості у розумінні. Є два [відомих мені і адекватних на мій погляд] налаштування самби, це через, той самий, конфігураційний файл і за допомогою утиліти - WebMin. Це дико-крута штука, особливо для тих, хто не любить колупати конфіги [але і тут є свої нюанси]. У цій статті не зупинятимемося на коштах " для лінивих", тому продовжуємо. Ми будемо розглядати робочий конфіг файл. Знаходиться він за адресою: /etc/samba/smb.conf. Ось він:
# Вказуємо ім'я користувача. guest account = nobody # Вказуємо ім'я netbios name = homeserver # Включаємо можливість прав "write" writeable = yes # Додаткова опція, що прибирає затримку. socket options = TCP_NODELAY IPTOS_LOWDELAY # За необхідності, вказуємо робочу групу, де будуть комп'ютери # (абсолютно не обов'язковий параметр) workgroup = HOMENET # Вибираємо інтерфейси на які "прослуховуватиме" самба. # (також, необов'язкова опція, за замовчуванням, будуть прослуховувати всі інтерфейси) interfaces = eth1 wlan0 # Вдома безпека особливо не потрібна. security = share public = yes # Дозволяємо гостя guest ok = yes # Тільки гість? Так. guest only = yes # Шлях до публічної папки path = /cifs/pub # Не забороняємо запис. read only = no # Також, якщо цікавить можливість доступу до CD-ROM"у, то вставте # в конфіг самби наступні опції:
Також, додаткове налаштування можна виконати через вбудований в 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 #перевіряти хеш торрента після завантаження встановлення #зашифрованого з'єднання encryption = allow_incoming,enable_retry,prefer_plaintext #використати udp use_udp_trackers = yes


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

Власне, і все. Далі хитрий прийом - відкриваємо консоль і пишемо (можна і по ssh зайти на сервер):
screen rtorrent
Далі, в терміналі відкриється торрент-клієнт, там Ви можете його налаштувати і налагодити додатково. Тепер натискаємо чарівні комбінації клавіш Ctrl+A, потім Ctrl+D і консоль радісно Вас оповістить, що:


Рисунок 3. "Заскринювання" процесу програми rTorrent.

Це говорить про те, що процес Вашого торрент-клієнта «закринін», тобто виконується, але його при цьому не видно. Для тих, адептів, кому завжди, все цікаво, може прочитати ось тут про дану утиліту обтяжувати голову такими речами (хоча вони дуже цікаві та пізнавальні, і застосовуються часто) примусово я не хочу.
Якщо Вам знадобилося по-новому відкрити клієнт, пишемо:
screen -r
ВАЖЛИВО: Якщо Ви хочете запускати торрент-клієнт під рутом(root, тобто через команду sudo) то, необхідно конфіг файл створювати в кореневому каталозі користувача root, а також, screen -r необхідно виконувати також, під тим самим користувачем, під яким Ви її «заскринили».
Таким чином, у Вас у фоні завжди буде висіти торрент-клієнт, який качатиме і роздаватиме рівно стільки, скільки працюватиме Ваш сервер.

На цій «важливій» ноті я хочу закінчити цю статтю. Дякую за увагу, і так, користуйтеся пошуковою системою Google, він молодець!

Якщо помилився топіком, підкажіть куди перенести.



Розповісти друзям