Не пойму что с apache+suexec

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Не пойму что с apache+suexec

Непрочитанное сообщение wien » 2015-02-03 11:21:32

Как убедиться,что один из виртуалхостов работает от имени указанного пользователя? Либ о это не отражается в процессах и подмена id происходит незаметно, либо я что-то не так настроил.
Итак к конфигам:
/usr/hosting/httpd_configs/mydomain.ru.conf

Код: Выделить всё

<VirtualHost *:80>
 ScriptAlias /cgi-bin/ /usr/hosting/sites/renat/cgi-bin/
 ServerAdmin support@mydomain.ru
 SuexecUserGroup renat renat
 DocumentRoot /usr/hosting/sites/renat/www
 ServerName mydomain.ru
 ServerAlias www.mydomain.ru

# Директория пользователя
<Directory /usr/hosting/sites/renat/www>
 Options -Indexes FollowSymLinks MultiViews +ExecCGI

AddHandler      fcgid-script .php
FcgidWrapper /usr/hosting/sites/renat/cgi-bin/php-wrapper .php

 AllowOverride All
 Order deny,allow
 Allow from all
 </Directory>

# директория скриптов пользователя
<Directory /usr/hosting/sites/renat/cgi-bin>
 AllowOverride None
 Options None
 Order allow,deny
 Allow from all
 </Directory>

DirectoryIndex index.php index.html index.htm index.shtml
 ErrorLog /usr/hosting/sites/renat/log/error.log
 CustomLog /usr/hosting/sites/renat/log/access.log common
</VirtualHost>
В конфиге апача создан первый виртуалхост, чтобы при обращении по ип - заземлялось на него:

Код: Выделить всё

NameVirtualHost *:80
# Первый виртуал-хост

<VirtualHost *:80>
 ScriptAlias /cgi-bin/ /usr/local/www/apache22/cgi-bin/
 DocumentRoot /usr/local/www/apache22/data
 ServerName ip.ip.ip.ip # тут мой ип

# Директория пользователя
<Directory /usr/local/www/apache22/data>
 Options -Indexes FollowSymLinks +ExecCGI

 AllowOverride All
 Order deny,allow
 Allow from all
 </Directory>

DirectoryIndex index.php index.html index.htm index.shtml
</VirtualHost>
Так же включены

Код: Выделить всё

...................................................................
LoadModule fcgid_module libexec/apache22/mod_fcgid.so
LoadModule suexec_module libexec/apache22/mod_suexec.so
LoadModule php5_module        libexec/apache22/libphp5.so
LoadModule cgi_module libexec/apache22/mod_cgi.so
LoadModule cgid_module libexec/apache22/mod_cgid.so
...................................................................
httpd -V

Код: Выделить всё

Server version: Apache/2.2.29 (FreeBSD)
Server built:   Jan 31 2015 17:15:54
Server's Module Magic Number: 20051115:36
Server loaded:  APR 1.4.8, APR-Util 1.5.3
Compiled using: APR 1.4.8, APR-Util 1.5.3
Architecture:   32-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses disabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/usr/local"
 -D SUEXEC_BIN="/usr/local/sbin/suexec"
 -D DEFAULT_PIDLOG="/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="/var/run/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="etc/apache22/mime.types"
 -D SERVER_CONFIG_FILE="etc/apache22/httpd.conf"
suexec -V

Код: Выделить всё

-D AP_DOC_ROOT="/usr/hosting/sites/"
 -D AP_GID_MIN=1000
 -D AP_HTTPD_USER="www"
 -D AP_LOG_EXEC="/var/log/httpd/suexec.log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=1000
 -D AP_USERDIR_SUFFIX="/usr/hosting/sites/*/cgi-bin"
Вопрос: почему по команде ps -U renat я не вижу в списке процессов апач, работающий от пользователя renat?
Хотя сайт нормально открывается.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Не пойму что с apache+suexec

Непрочитанное сообщение Alex Keda » 2015-02-03 18:27:44

Запуститте чёнить долгосчитающее - увидите
Убей их всех! Бог потом рассортирует...

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Не пойму что с apache+suexec

Непрочитанное сообщение wien » 2015-02-05 0:29:15

Следить решил по-другому: запустил top, далее u renat:

Код: Выделить всё

 PID USERNAME    THR PRI NICE   SIZE    RES STATE    TIME    WCPU COMMAND
Как был список чистый так и остался,хотя для нагрузки скачал phphBB 3.1.1 и запустил процесс его установки, но в диспетчере ни намека. Сайт по-прежнему корректно грузится, но отсутствие процессов пользователя наводит на мысли о неверной настройке. В какую сторону смотреть?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Не пойму что с apache+suexec

Непрочитанное сообщение Alex Keda » 2015-02-06 8:21:12

В сторону цэашмод 600 на файл, овнер которого тот юзер
И посмотреть, долезет ли Апач до него
Убей их всех! Бог потом рассортирует...

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Не пойму что с apache+suexec

Непрочитанное сообщение wien » 2015-03-15 23:23:11

Спустя некоторое время поднимаю тему, поскольку заниматься решением небыло возможности, а проблема осталась.

Создал в папке www этого пользователя файл whoami.php со следующим содержимым:

Код: Выделить всё

<?php

echo exec('whoami');

?>

Получил:

Код: Выделить всё

Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0

Fatal error: Unknown: Failed opening required '/usr/hosting/sites/renat/www/whoami.php' (include_path='.:/usr/local/share/pear') in Unknown on line 0
Следовательно apache не дотягивается до этого файла, а когда права на файл стояли 755 вывод был в браузер www, следовательно suexec сконфигурил неверно, понять бы где ошибка.
Пользователь www в группе пользователя renat присутствует:

Код: Выделить всё

root@eng102:/usr/hosting/sites/renat/www # cat /etc/group | grep renat
renat:*:1009:www
Что апач не дотягивается до файлов есть еще одно доказательство. Поставил wordpress, картинки и медиафайлы грузить следует в папку uploads. При корректной установке прав на каталог uploads 755 загрузить не дает, пишет в общем что не хватает прав, если установить 777 - все ОК, но это не есть гуд в плане безопасности, 775 - тоже работает, пока оставил так. По сути проблема сводится к тому что сайт не работает от того пользователя, кому принадлежат файлы.

Что еще посоветуете покрутить, Уважаемые?

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Не пойму что с apache+suexec

Непрочитанное сообщение wien » 2015-03-16 14:59:08

Вроде победил. Завелось, процессы юзерские php-cgi появились.
1. В конфиг апача прописал в конец это:

Код: Выделить всё

<IfModule mod_fastcgi.c>
        FastCgiConfig   -singleThreshold 30 -minProcesses 2 -restart    \
                        -idle-timeout 400 -killInterval 200 -autoUpdate \
                        -pass-header HTTP_AUTHORIZATION
        # используется для включения враппера
        FastCgiWrapper /usr/local/sbin/suexec
        # директория где хранятся сокеты
        FastCgiIpcDir /var/run/fastcgi
        # предпринимаемые для такого типа файлов действия
        Action application/x-httpd-fastphp /cgi-bin/php-wrapper
        Action application/x-httpd-php /cgi-bin/php-wrapper
        # добавляем типы файлов - у меня нету типа .php4 .php5 и т.д.
        # если у вас есть - добавльте через пробелы в этой строке
        AddType application/x-httpd-fastphp     .php
        # Обработка файлов апачем
        <Location /php-fcgi/>
                Options ExecCGI FollowSymLinks
                SetHandler fastcgi-script
                AddHandler      fcgid-script .php
        </Location>
</IfModule>
Подсмотрено у лисы.

2. Отключил модуль php в конфиге апача:

Код: Выделить всё

LoadModule authn_file_module libexec/apache22/mod_authn_file.so
LoadModule authn_dbm_module libexec/apache22/mod_authn_dbm.so
LoadModule authn_anon_module libexec/apache22/mod_authn_anon.so
LoadModule authn_dbd_module libexec/apache22/mod_authn_dbd.so
LoadModule authn_default_module libexec/apache22/mod_authn_default.so
LoadModule authn_alias_module libexec/apache22/mod_authn_alias.so
LoadModule authz_host_module libexec/apache22/mod_authz_host.so
LoadModule authz_groupfile_module libexec/apache22/mod_authz_groupfile.so
LoadModule authz_user_module libexec/apache22/mod_authz_user.so
LoadModule authz_dbm_module libexec/apache22/mod_authz_dbm.so
LoadModule authz_owner_module libexec/apache22/mod_authz_owner.so
LoadModule authz_default_module libexec/apache22/mod_authz_default.so
LoadModule auth_basic_module libexec/apache22/mod_auth_basic.so
LoadModule auth_digest_module libexec/apache22/mod_auth_digest.so
LoadModule file_cache_module libexec/apache22/mod_file_cache.so
LoadModule cache_module libexec/apache22/mod_cache.so
LoadModule disk_cache_module libexec/apache22/mod_disk_cache.so
LoadModule mem_cache_module libexec/apache22/mod_mem_cache.so
LoadModule dbd_module libexec/apache22/mod_dbd.so
LoadModule dumpio_module libexec/apache22/mod_dumpio.so
LoadModule reqtimeout_module libexec/apache22/mod_reqtimeout.so
LoadModule include_module libexec/apache22/mod_include.so
LoadModule filter_module libexec/apache22/mod_filter.so
LoadModule charset_lite_module libexec/apache22/mod_charset_lite.so
LoadModule deflate_module libexec/apache22/mod_deflate.so
LoadModule log_config_module libexec/apache22/mod_log_config.so
LoadModule logio_module libexec/apache22/mod_logio.so
LoadModule env_module libexec/apache22/mod_env.so
LoadModule mime_magic_module libexec/apache22/mod_mime_magic.so
LoadModule cern_meta_module libexec/apache22/mod_cern_meta.so
LoadModule expires_module libexec/apache22/mod_expires.so
LoadModule headers_module libexec/apache22/mod_headers.so
LoadModule usertrack_module libexec/apache22/mod_usertrack.so
#LoadModule unique_id_module libexec/apache22/mod_unique_id.so
LoadModule setenvif_module libexec/apache22/mod_setenvif.so
LoadModule version_module libexec/apache22/mod_version.so
LoadModule ssl_module libexec/apache22/mod_ssl.so
LoadModule mime_module libexec/apache22/mod_mime.so
LoadModule dav_module libexec/apache22/mod_dav.so
LoadModule status_module libexec/apache22/mod_status.so
LoadModule autoindex_module libexec/apache22/mod_autoindex.so
LoadModule asis_module libexec/apache22/mod_asis.so
LoadModule info_module libexec/apache22/mod_info.so
LoadModule cgi_module libexec/apache22/mod_cgi.so
LoadModule cgid_module libexec/apache22/mod_cgid.so
LoadModule dav_fs_module libexec/apache22/mod_dav_fs.so
LoadModule vhost_alias_module libexec/apache22/mod_vhost_alias.so
LoadModule negotiation_module libexec/apache22/mod_negotiation.so
LoadModule dir_module libexec/apache22/mod_dir.so
LoadModule imagemap_module libexec/apache22/mod_imagemap.so
LoadModule actions_module libexec/apache22/mod_actions.so
LoadModule speling_module libexec/apache22/mod_speling.so
LoadModule userdir_module libexec/apache22/mod_userdir.so
LoadModule alias_module libexec/apache22/mod_alias.so
LoadModule rewrite_module libexec/apache22/mod_rewrite.so
LoadModule fcgid_module libexec/apache22/mod_fcgid.so
LoadModule suexec_module libexec/apache22/mod_suexec.so
#LoadModule php5_module        libexec/apache22/libphp5.so
LoadModule fastcgi_module     libexec/apache22/mod_fastcgi.so
И тут вопросы:
а) В модулях упоминаются как fcgid_module так и fastcgi_module, а еще cgi_module и cgi_module. Где указывается какой именно модуль у меня используется?
б) Какая между ними разница в плане быстродействия и безопасности? Что лучше использовать?
3. Наблюдается следующая ситуация: обратился к сайту на сервере, спустя некоторое время php-cgi процессы пользователя дохнут. Поэтому при следующем обращении есть небольшая задержка (видимо пока процессы рождаются). Как сократить эту задержку?

Аватара пользователя
wien
сержант
Сообщения: 151
Зарегистрирован: 2014-06-26 18:38:44
Откуда: DafaultCity
Контактная информация:

Не пойму что с apache+suexec

Непрочитанное сообщение wien » 2015-03-23 15:50:03

Уважаемые, вопросы актуальны, тема up!