Когда вы самостоятельно приобретаете свой собственный VPS для своего сайта на WordPress, вы не получите пользователя для передачи файлов по умолчанию (кроме root). Если вы используете не корневого пользователя вы получите ошибки разрешения. Этот пост покажет вам, как исправить проблемы с разрешениями, если вы хотите добавить пользователя SFTP с Nginx и PHP-FPM.
Я использую Debian 9 для этого урока, поэтому я предполагаю, что вы используете PHP 7.
Добавление SFTP пользователя с необходимыми разрешениями для Nginx с PHP-FPM
- Создание нового пользователя с правой домашней папке
- FTP пользователь становится членом группы www-data
- Настройка Nginx для работы в качестве пользователя FTP
- PHP-FPM работает как ftpuser в группе www-data
- Правильные разрешения
Создание SFTP пользователя
Создание нового 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
Откройте конфигурацию 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
Откройте конфигурацию 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 без каких-либо проблем с правами доступа.