Chroot Заключение пользователя в тюрьму домой с помощью PHP CLI и всего остального для запуска Magento 2 CLi commands

Хорошо, во-первых, я почти уверен, что будет масса запросов на "дополнительную информацию", поэтому, пожалуйста, размещайте их в комментариях OP, и я сделаю все возможное, чтобы предоставить дополнительную информацию по требованию!

Вот тощий, сначала сервер:

Это общий промежуточный сервер, Ubuntu 16.4 LTS с Apache2.4, Php7.1, Mysql 5.7. На нем установлены Webmin, VirtualMin и UserMin (последняя версия). Он также имеет глобально установленный phpMyAdmin. Он настроен так, чтобы разрешить обслуживание сайтов с помощью mod_php (с использованием www-данных), CGI, FCGI (по умолчанию) или FPM + FCGI. Варианты CGI / FPM используют SuExec для запуска сайтов. Сам веб-сервер работает отлично.

Итак, теперь задача состоит в том, чтобы настроить Chroot jail, чтобы позволить существующему пользователю домена использовать SSH или SFTP, но видеть только их домашний каталог, который уже заполнен последней установкой Magento 2.

В этом примере мы будем использовать эти данные:

Пользователь = домен теперь задача состоит в том, чтобы настроить тюрьму Chroot, чтобы позволить существующему пользователю домена использовать SSH или SFTP, но видеть только их домашний каталог, который уже заполнен последней установкой Magento 2.

В этом примере мы будем использовать следующие данные:

Пользователь = домен теперь задача состоит в том, чтобы настроить тюрьму Chroot, чтобы позволить существующему пользователю домена использовать SSH или SFTP, но видеть только их домашний каталог, который уже заполнен последней установкой Magento 2.

В этом примере мы будем использовать эти данные:

Пользователь = домен Группа = домен Домашний каталог = / home / domain / Chroot = / var / chroot /

Теперь я могу настроить Chroot, что я сделал, это скопировал необходимые файлы lib / var / usr, разрешил команды ls, bash, sh, rm, rmdir, mkdir, touch, vi и php.

Это потребовало некоторой работы, но я заставил команду PHP работать (после обнаружения всех зависимостей модуля) почти правильно.

Тюрьма CHroot в порядке, я смонтировал / home / domain в / var / chroot / home / domain, так что все в порядке. Пользователь фактически заключен в тюрьму и может видеть домашний каталог пользователя и, таким образом, может без проблем получить доступ ко всем файлам веб-сайта.

В отношении базы данных Я пропустил команды mysql, поскольку у нас есть phpmyadmin, доступный глобально, поэтому они могут входить в соответствующую базу данных только с помощью пользователя mysql из выделенного домена. нет проблем.

Настоящая проблема связана с Magento 2. Здесь, как мы знаем, вы используете инструменты командной строки для таких вещей, как обновление кеша, создание индекса и другие задачи по развертыванию, некоторые примеры:

domain@server:/home/domain/public_html# php bin/magento cache:flush
domain@server:/home/domain/public_html# php bin/magento indexer:reindex
domain@server:/home/domain/public_html# php bin/magento setup:static-content:deploy en_US

Как мы видим, эти команды запускаются через интерпретатор PHP CLI, и он берет на себя всю работу по тому, чтобы PHP работал прямо на заключенном в тюрьму CLI.

Сначала у меня возникали проблемы с базой данных с cache: flush и т. Д., Но с некоторыми изменениями php.ini для интерфейса командной строки (я скопировал файл FCGI из дома пользователей в место заключения) и некоторые "найти правильный mysql.sock" Я исправил это без проблем (ну, некоторые проблемы, но исправили!)

Фактический вопрос

У меня проблема с indexer: reindex с правами root однако в Chroot проблем нет, поскольку в пользовательском домене по какой-то причине команда выдает ошибки для всех, кроме первого индекса. Вот результат:

-bash-4.3$ cd /home/domain/public_html/
-bash-4.3$ php bin/magento indexer:reindex
Design Config Grid index has been rebuilt successfully in 00:00:00
Customer Grid indexer process unknown error: 
Warning: SessionHandler::read(): open(/home/domain/tmp/sess_mfn527a808ntv8e3g9glcjg8aq, O_RDWR) failed: No such file or directory (2) in /home/domain/public_html/vendor/magento/framework/Session/SaveHandler/Native.php on line 22
Category Products indexer process unknown error:
Warning: SessionHandler::read(): open(/home/domain/tmp/sess_mfn527a808ntv8e3g9glcjg8aq, O_RDWR) failed: No such file or directory (2) in /home/domain/public_html/vendor/magento/framework/Session/SaveHandler/Native.php on line 22
Product Categories indexer process unknown error:
Warning: SessionHandler::read(): open(/home/domain/tmp/sess_mfn527a808ntv8e3g9glcjg8aq, O_RDWR) failed: No such file or directory (2) in /home/domain/public_html/vendor/magento/framework/Session/SaveHandler/Native.php on line 22
Product Price indexer process unknown error:
Warning: SessionHandler::read(): open(/home/domain/tmp/sess_mfn527a808ntv8e3g9glcjg8aq, O_RDWR) failed: No such file or directory (2) in /home/domain/public_html/vendor/magento/framework/Session/SaveHandler/Native.php on line 22
Warning: SessionHandler::read(): open(/home/domain/tmp/sess_mfn527a808ntv8e3g9glcjg8aq, O_RDWR) failed: No such file or directory (2) in /home/domain/public_html/vendor/magento/framework/Session/SaveHandler/Native.php on line 22
Warning: SessionHandler::read(): open(/home/domain/tmp/sess_mfn527a808ntv8e3g9glcjg8aq, O_RDWR) failed: No such file or directory (2) in /home/domain/public_html/vendor/magento/framework/Session/SaveHandler/Native.php on line 22
Catalog Rule Product indexer process unknown error:
Warning: SessionHandler::read(): open(/home/domain/tmp/sess_mfn527a808ntv8e3g9glcjg8aq, O_RDWR) failed: No such file or directory (2) in /home/domain/public_html/vendor/magento/framework/Session/SaveHandler/Native.php on line 22
Catalog Product Rule indexer process unknown error:
Warning: SessionHandler::read(): open(/home/domain/tmp/sess_mfn527a808ntv8e3g9glcjg8aq, O_RDWR) failed: No such file or directory (2) in /home/domain/public_html/vendor/magento/framework/Session/SaveHandler/Native.php on line 22
Catalog Search indexer process unknown error:
Warning: SessionHandler::read(): open(/home/domain/tmp/sess_mfn527a808ntv8e3g9glcjg8aq, O_RDWR) failed: No such file or directory (2) in /home/domain/public_html/vendor/magento/framework/Session/SaveHandler/Native.php on line 22

Хорошо, сказал я, это своего рода сбой создания сеанса, после которого индексатор не может прочитать сеанс, который не удалось создать. Объясняет, почему первый работает, а второй - нет. Я попытался смонтировать каталог сеанса по умолчанию для PHp в chroot jail, поэтому я смонтировал / var / lib / php / в / var / chroot / var / lib / php . В этом каталоге есть липкий бит, поэтому я предпочитаю монтировать, а не создавать.

По-прежнему нет кубиков. Я подумал, а что, если я переиндексирую по одному:

-bash-4.3$ php bin/magento indexer:reindex customer_grid
Customer Grid indexer process unknown error:
Warning: SessionHandler::read(): open(/home/domain/tmp/sess_en89p7h50m9mc1a0pb8l3c3tv1, O_RDWR) failed: No such file or directory (2) in /home/domain/public_html/vendor/magento/framework/Session/SaveHandler/Native.php on line 22

По-прежнему нет кубиков. Я изо всех сил пытаюсь понять, с чем он на самом деле борется, где он получает этот предполагаемый идентификатор сеанса, где он должен создавать файл сеанса и где / какие журналы я могу посмотреть для информации!

Может ли кто-нибудь предложить m для продвижения вперед и освоения SH-тюремного заключения пользователя сайта Magento 2?

0
задан 30 October 2017 в 19:23
2 ответа

Отвечаю на свой вопрос, поскольку мне удалось решить проблему.

2 вещи не так:

  1. Во-первых, чтобы в chroot я не возился с настройками php-cli для остальной части сервера, я скопировал php.ini в тюрьму. Затем я должным образом установил путь сохранения сеанса в каталог без липкого бита.

Вот почему я мог создать файл сеанса в / var / lib / php / sessions от имени пользователя root, но в chroot jail это было невозможно, потому что он помещал его в неправильное место с неправильными разрешениями.

Итак, обновили правильный php.ini и проверили разрешения, счастливых дней, у нас есть сеанс! indexer: reindex работает здорово!

  1. Итак, что касается главного, setup: static-content: deploy , все, что я могу сказать, это «вы знаете, когда скрипт выдает так много ошибок, что вы не можете добраться до вершины в CLI? ", Да это. Эрк: /

Это произошло из-за (в конечном итоге обнаруженного) моих слабых навыков игры на клавиатуре. когда я смонтировал каталог пользователя в тюрьме, я неправильно ввел имя каталога, поэтому путь / home / domain / public_html не был / home / domain / public_html в тюрьме. Быстрая переустановка, и все снова стало хорошо.

Итак, проблема решена, спасибо ThoriumBR за его полезные советы!Лизонс узнал, и, надеюсь, эта история может помочь другим.

0
ответ дан 5 December 2019 в 07:17

Попробуйте ls -l / home / domain / и ls -l / home / domain / tmp , похоже, у вас есть каталоги с неправильными разрешениями , неправильное владение, или и то, и другое.

PHP пытается получить доступ к файлу сеанса и терпит неудачу. Или файл существует, а домен не имеет доступа для чтения, или файл не существует, а домен не имеет прав на запись в каталог.

0
ответ дан 5 December 2019 в 07:17

Теги

Похожие вопросы