Когда вы самостоятельно приобретаете свой собственный VPS для своего сайта на WordPress, вы не получите пользователя для передачи файлов по умолчанию (кроме root). Если вы используете не корневого пользователя вы получите ошибки разрешения. Этот пост покажет вам, как исправить проблемы с разрешениями, если вы хотите добавить пользователя SFTP с Nginx и PHP-FPM.
Я использую Debian 9 для этого урока, поэтому я предполагаю, что вы используете PHP 7.
Создание нового FTP пользователя, /var/www
является домашней папкой для пользователя FTP
sudo useradd -d /var/www/ ftpuser
Установите пароль для ftpuser
, когда появится запрос на ввод пароля, вы не увидите символы когда вы набираете!
sudo passwd ftpuser
Добавьте ftp
пользователя к группе www-data
sudo usermod -aG www-data ftpuser
Ваш новый пользователь FTP теперь является членом правой группы и имеет правильную домашнюю папку
Откройте конфигурацию Nginx
sudo nano /etc/nginx/nginx.conf
Измените user
значение на ftpuser
# andreyex.ru nginx configuration user ftpuser; worker_processes auto; pid /run/nginx.pid;
Проверьте правильность синтаксиса Nginx
sudo nginx -t
Вы должны получить эти сообщения подтверждения
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Теперь Nginx будет работать как пользователь FTP.
Откройте конфигурацию PHP-FPM
sudo nano /etc/php/7.0/fpm/pool.d/www.conf
Измените значение user
на ftpuser
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = ftpuser group = www-data
Проверка синтаксис PHP-FPM
sudo php-fpm7.0 -t
Вы должны увидеть это сообщение об успешном выполнении
[25-Mar-2017 07:05:24] NOTICE: configuration file /etc/php/7.0/fpm/php-fpm.conf test is successful
Теперь PHP-FPM настроен для работы в качестве ftpuser.
Рекурсивное изменение прав доступа для ftpuser
в домашней папки
sudo chown -R ftpuser:www-data /var/www
Установите 775
для папок, чтобы ftpuser и группа www-data могли выполнять
sudo find /var/www/ -type d -exec chmod 775 {} +
Набор 664
для файлов, чтобы ftpuser и группа www-data могли записывать файлы
sudo find /var/www/ -type f -exec chmod 664 {} +
Изменение разрешений для папки /var/lib/nginx
sudo chown -R ftpuser:www-data /var/lib/nginx
Изменение разрешения папки журнала
sudo chown -R ftpuser:www-data /var/log/nginx
Изменение прав PHP сессий
sudo chown -R ftpuser:www-data /var/lib/php/sessions
Теперь услуги просто необходимо перезапустить
sudo service php7.0-fpm restart sudo service nginx restart
Теперь вы должны иметь возможность загружать файлы через SFTP без каких-либо проблем с правами доступа.
sudo chown -R ftpuser:www-data /var/lib/php/sessions
— с таким подходом, после обновления php права нужно будет опять выставлять!
Лучше переопределит путь в /etc/php-fpm.d/www.conf
для следующих:
php_admin_value[error_log]
php_value[session.save_path]
php_value[soap.wsdl_cache_dir]
..или chroot…
Спасибо за инструкцию!
Меня волнует безопасность такой настройки, в некоторых руководствах дают права только на папку wp-content или вообще меняют ftp пользователя после обновлений.
Меняете ли вы лично права после обновлений?
P.S.
PhpMyAdmin тоже нужно права дать 755 и 644 если конечно он есть.