SFTP удобное и безопасное подключение к файлам ресурса используя ssh. Инструкцию можно использовать для любых систем Linux. Отличие только в командах на перезапуск сервисов Nginx, Php-fpm, SSH и путях к файлам настройки.

Введение

Ранее я использовал для работы с файлами сайтов программу ProFTP, но отказался в пользу SFTP из за более стабильной работы и простоты настройки.

ProFTPd настройка доступа по FTP к сайтам на сервере VDS под управлением CentOS 7. Создание файловой базы пользователей для авторизации с правами от Nginx. Подключение с использованием сертификата для TLS.
Настройка

Настройку будем производить для системы Calculate Linux. Система основана на Gentoo, но имеет ряд существенных преимуществ позволяющих работать с системой гораздо удобней в отличии от дистрибутива Gentoo.

Добавление пользователя

Создадим пользователя которому дадим права на файлы ресурса. Удобно использовать имя пользователя пересекающееся с названием сайта.

В нашем случае мы настраиваем доступ к сайту sevo44.ru. Добавим пользователя с нужными параметрами и создадим ему пароль:

useradd -s /bin/bash sevo44.ru
passwd sevo44.ru

Настройка SSH для SFTP

Открываем конфигурационный файл ssh находящийся по пути /etc/ssh/sshd_config. Комментируем один параметр и добавим необходимый код:

vim /etc/ssh/sshd_config
= необходимые изминения и добавления =
# Закоментируем параметр
#Subsystem sftp /usr/lib64/misc/sftp-server

# Для работы sftp
Subsystem sftp internal-sftp
# Для sevo44.ru
Match User sevo44.ru
 X11Forwarding no
 AllowTcpForwarding no
 AllowAgentForwarding no
 PermitTunnel no
 ForceCommand internal-sftp
 ChrootDirectory /var/www/sevo44.ru
# /sevo44.ru

Перезапускаем службу sshd:

/etc/init.d/sshd restart

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

Настройка прав на данные

Назначаем владельцем содержимого сайта пользователя которого мы создали выше:

chown -R sevo44.ru:sevo44.ru /var/www/sevo44.ru/

Возвращаем обратно рута владельцем корня chroot:

chown root:root /var/www/sevo44.ru/
chmod 0755 /var/www/sevo44.ru/

Внимание! Сначала мы рекурсивно назначаем права на все содержимое директорий, а потом возвращаем владельца root только на корень. Только в таком варианте все будет корректно работать!

Добавляем пользователя nginx в группу sevo44.ru.

usermod -aG sevo44.ru nginx

Настройка PHP-FPM

Создадим отдельный pool для php-fpm, который будет обслуживать сайт sevo44.ru. Использование отдельного пула для сайта так же может быть обусловлено специфическими настройками для ресурса. Удобно когда для каждого сайта используется независимый пул в котором можно выставить необходимые значения. Переходим в нужную папку, копируем существующий конфигурационный файл /etc/php/fpm-php7.2/fpm.d/www.conf и делаем необходимые изменения:

cd /etc/php/fpm-php7.2/fpm.d/
cp www.conf sevo44.ru.conf
vim /etc/php/fpm-php7.2/fpm.d/sevo44.ru.conf
= необходимые параметры =
[sevo44.ru]
 user = sevo44.ru
 group = sevo44.ru
 listen = /run/php-fpm-sevo44.socket
 listen.owner = sevo44.ru
 listen.group = sevo44.ru
 pm = dynamic
 pm.max_children = 20
 pm.start_servers = 2
 pm.min_spare_servers = 1
 pm.max_spare_servers = 3

Осталось указать нужный параметр в настройки хоста для nginx.

Откроем необходимый файл и внесём необходимую настройку:

vim /etc/nginx/conf.d/sevo44.ru.conf
= необходимый параметр =
fastcgi_pass unix:/run/php-fpm-sevo44.socket;

Проверим правильность настройки Nginx и перезагрузим необходимые сервисы:

nginx -t
/etc/init.d/nginx reload
/etc/init.d/php-fpm restart

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

Вывод

В результате настроек мы получаем защищённый и удобный доступ для работы с файлами ресурса. Для работы я использую программу FileZilla.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Хотите сказать денежное спасибо? Подарите денежку!