Я настраиваю веб-сервер для WordPress.
WordPress требует, чтобы эти материалы принадлежали пользователю www, иначе у него возникнут проблемы с установкой плагинов и тем (запрашивает учетные данные FTP сервера, это глупо, я знаю).
Это не будет проблемой, но я хочу дать одному пользователю ssh пустой каталог WWW, чтобы они могли сами загружать / распаковывать / настраивать WordPress (метод рук).
После загрузки и распаковки архива WordPress все файлы принадлежат этому конкретному пользователю, и у них возникают проблемы с управлением установкой или обновлениями плагинов / тем по уже упомянутым причинам.
Каким будет наиболее удобный и безопасный способ достижения обеих целей, позволяющий пользователю чувствовать себя как дома и иметь полностью работающую установку WordPress?
Кажется, setfacl может быть достойным решением, чтобы все новые вещи в одном каталоге наследовали установленные мной разрешения.
Может ли кто-нибудь предложить намек или предложение о том, как достичь того, чего я пытаюсь достичь, или даже направить меня в другом направлении?
Я использую Nginx с PHP-FPM.
Спасибо!
Я нашел решение. Это я идиот.
Я скопировал конфигурацию пула php-fpm с другого хоста и забыл определить права пользователя: пользователя, поэтому процесс php запускается от имени этого пользователя.
Изменение этого и добавление пользователя nginx (www) в группу пользователей устранило проблему.
Добавить / обновить FS_METHOD
в вашем wp-config.php укажите константу "direct", и вы сможете обновлять без предоставления каких-либо данных FTP.
define('FS_METHOD', 'direct');
FS_METHOD форсирует метод файловой системы. Это должно быть только «direct», «ssh2», «ftpext» или «ftpsockets». Как правило, вам следует изменять это только при возникновении проблем с обновлением. Если вы меняете его, и это не помогает, поменяйте обратно / удалите. В большинстве случаев установка ftpsockets будет работать, если автоматически выбранный метод не работает.
(Основное предпочтение) «прямой» заставляет его использовать запросы прямого ввода-вывода файлов из PHP, это чревато открытием проблем безопасности на плохо настроенных хостах. При необходимости это выбирается автоматически.
(Вторичное предпочтение) «ssh2» - это принудительное использование расширения SSH PHP, если оно установлено (3-е предпочтение), «ftpext» - принудительное использование расширения FTP PHP для доступа к FTP и, наконец.
(4-е предпочтение) ftpsockets использует класс сокетов PHP для доступа по FTP.
Другой вариант - создать сценарий, который изменяет право собственности на файлы, которые они загружают в определенный каталог. Вы можете настроить файл sudoers, чтобы они могли запускать только этот скрипт от имени пользователя root без необходимости ввода пароля.
Это может быть брешь в безопасности, если все сделано неправильно, но если вы все сделаете правильно, в этом нет ничего страшного. Некоторые вещи, в которых нужно убедиться,
chattr +i
) в теме.