Показано с 1 по 1 из 1

Тема: Слабая точка всех OS - права. На примере CentOS - [crit] open() does_not_exists faile

  1. #1
    Member
    Регистрация
    22.05.2015
    Сообщений
    68

    По умолчанию Слабая точка всех OS - права. На примере CentOS - [crit] open() does_not_exists faile

    В индексе ПС все чаще натыкаюсь на свои же заметки, но и чужие, но все они оказались не полными и тщетными, чтобы решить с ходу, данную конкретную проблему. Основная задача панели, по минимум администрировать Линукс линейку и получить рабочую станцию для сайтов на базе дефоултных настроек серверов. Увы, наличие панели из коробки не дает сегодня 100% гарантии, что Ваша CMS заведется на ее дефоултной конфигурации, поэтому приходится разбираться и администрировать СеntOS, Debian, в общем линейку Linux на предмет ее подводных камней в связке CMS с Apache, Nginx, PHP-FPM. Хотя абсолютно любая панель значительно облегчает настройку Линукса, под WordPress, Drupal, Joomla или комерческие CMS: 1C Bitrix, Webasys, Prestashop, ModX, cs cart, opencart или Magento, но увы избежать работы в *nix среде сегодня невозможно.

    Примерно те же проблемы с правами были в коробочной версии на базе ОС Debian
    дата время [crit] троло-ло open() "путь/does_not_exists" failed (13: Permission denied), client: 7.7.7.13, server: site.com, request: "POST /../../ HTTP/2.0" или ("GET /robots.txt HTTP/1.1"), host: "site.ru", referrer: "https://site.ru/"

    Вы наверно подумаете, что легко и в 2 минуты получится проскочить, через эту проблему, быстро листая и Гугля, кто как ее решил, но, увы без должной подготовки - нет, если ты новичек и сейчас не сосредоточишься, то будь готов, что потеряешь херову тучу часов, а может и дней, на решении этой проблемы. Читай дальше внимательно.

    Список активных процессов и какой под каким запущен смотрится двумя командами:
    Код:
    [root@vps777 ~]# top
    или
    [root@vps777 ~]# ps -aux | grep nginx
    В линейке Линукс на "apt-get" архитектуре(Дебьян, Убунту и т.п.) с панелью ISPManager данная проблема решалась просто, добавлением всех участвующих пользователей в группу www-data, а пользователя www-data в группы этих пользователей, так как если не изменяет память apache и nginx крутились из под этого пользователя и эта проблема уходила, так как возможно данные процессы видели путь от корня сайта, а не главной директории сервера "/", как в коммерческой линейке красных шапок и ей подобных типа CentOS.
    И поэтому на CentOS после данных манипуляций данная проблема не ушла - open() "/var/www/USER/data/www/site.ru/does_not_exists" failed (13: Permission denied)
    В Дебьян она решилась набором команд: добавления пользователя в группу смотрим ТУТ, в какой группе пользователь ТУТ.
    Код:
    [root@vps777 ~]# id -Gn www-data
    [root@vps777 ~]# id -Gn user
    [root@vps777 ~]# sudo usermod -a -G mgrsecure,user1, user2, apache www-data
    [root@vps777 ~]# sudo usermod -a -G mgrsecure,www-data user1
    [root@vps777 ~]# sudo usermod -a -G mgrsecure,www-data user2
    На CentOS этой группы www-data не было, apache под apache, nginx под apache в итоге добавление только apache во все группы привели Nginx + PHP-FPM в положение
    404 Not Found
    nginx/1.14.1

    Код:
    [root@vps777 ~]# sudo usermod -a -G mgrsecure,user1, user2,nginx apache
    [root@vps777 ~]# sudo usermod -a -G mgrsecure,nginx, apache user
    [root@vps777 ~]# sudo usermod -a -G mgrsecure,nginx, apache user2
    Тогда я вернул пользователя apache в зад, только в его родную группу

    Код:
    [root@vps777 ~]# sudo usermod -G "" apache
    , а вот пользователя nginx добавил во все возможные группы, но еще пользователей добавил в разные группы.

    Код:
    [root@vps777 ~]# sudo usermod -a -G mgrsecure,user1,user2,apache nginx
    [root@vps777 ~]# sudo usermod -a -G mgrsecure,nginx,apache user
    [root@vps777 ~]# sudo usermod -a -G mgrsecure,nginx,apache user2

    И тогда в логах сайтов данная ошибка ушла.

    Вопрос конечно к тем кто постоянно работает над администрированием Линукс, а именно разработчикам ISPManager панели, все ли правильно? Или надо как-то сделать по другому?


    Предположим один человек вышел из этого положения так, ссылка(я ничего не понял, как это реализовать на ISPManager и правильно ли идти этой дорогой):
    Как сменить корень документов в Apache/nginx в CentOS 7 и RHEL 7 с SELinux



    Помощь слоабо понимающим и разбирающимся - делюсь самым важным - навыками.
    1) Не торопимся.
    2) Смотрим ВСЕ логи на премере одной ошибки в отдельности.
    3) Из консоли из под пользователя у которого урезены права пытаемся, прочесть или запустить файл.

    ТО ЕСТЬ - РАСШИФРОВЫВАЮ:

    Логи в консоли ISPManager -> WWW -> Журналы -> site.ru.error.log + /var/log/nginx/error.log

    Запуск команд от имени системных пользователей

    Иногда требуется запустить некую команду, программу или просто проверить права доступа от имени системных пользователей nobody, apache, nginx и т.д. Простой запуск через

    Код:
    su - nobody
    Даёт

    This account is currently not available.


    Это происходит из-за того, что у этих пользователей в качестве шела указан /sbin/nologin. Можно воспользоваться параметром -s для указания другого шела:

    Код:
    su - nobody -s /bin/sh
    И получить нужный результат, для того, чтобы в последствии увидеть ошибку.

    Также надо помнить, что в скриптах желательно использовать runuser вместо su:

    Код:
    runuser - nobody -s /bin/sh
    Последний раз редактировалось kodzero; 22.04.2020 в 17:40.

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •