Сообщения без ответов | Активные темы Текущее время: 19 апр 2024, 21:17




Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 10 ] 
Вопрос по правке /etc/sudoers 
Автор Сообщение
Новичок

Зарегистрирован:
18 дек 2015, 23:26
Сообщения: 14
Поблагодарили: 0 раз.
Откуда: Днепропетровск
Доброго времени суток!
Вопрос следующий: вот этот пример инструкции - www-data ALL = NOPASSWD: /путь/к/server.sh - что имеется ввиду: это от какого пользователя запускается Apache? Или от какого пользователя запускается игровой сервер? Или еще что-то?

На CentOs "апач" ака httpd запускается от root и от apache. Просто пытаюсь запустить локально сервер - панель управления и папка для игровых серверов находятся на одной машине - из консоли запускается и останавливается, а из ПУ никакой реакции - "Команда отправлена на сервер" .. и тишина. Я вот думаю, что я что-то не то в sudoers пишу. Подскажите, пожалуйста, в какую сторону копать (и какие логи и еще какую дополнительно информацию нужно предоставить).


19 дек 2015, 03:56
Профиль
Специалист
Аватара пользователя

Зарегистрирован:
25 янв 2012, 20:30
Сообщения: 487
Поблагодарили: 19 раз.
Откуда: Uzbekistan
От которого запускается apache.
Цитата:
www-data ALL = NOPASSWD: /путь/к/server.sh

Этой строчкой мы разрешаем пользователю www-data запуск /путь/к/server.sh от суперпользователя (sudo) без запроса пароля.
Главное не забудь установить флаг исполнения, аля chmod +x server.sh, а то и так и так не запустишь )0)

Ну и соответственно должны быть установлены sudo и screen, чтобы всё работало.

Если интересно
Код:
<?php
// выводит имя пользователя, от имени которого запущен процесс php/httpd
// (применимо к системам с командой "whoami" в системном пути)
echo exec('whoami');
?>


19 дек 2015, 06:07
Профиль ICQ WWW
Новичок

Зарегистрирован:
13 дек 2015, 14:08
Сообщения: 19
Поблагодарили: 0 раз.
punker,

а в логах gameap что?

В консоли
Цитата:
ps aux | grep apache

В первой колонке вам будет показано от кого работает apache
Как правило он работает от пользователя apache


19 дек 2015, 14:53
Профиль
Специалист
Аватара пользователя

Зарегистрирован:
10 июн 2012, 07:14
Сообщения: 391
Поблагодарили: 5 раз.
psa писал(а):
Как правило он работает от пользователя apache

Не всегда. Например, на Дебиане он от www-data работает. А у меня вообще от пользователя www, у которого есть своя домашняя директория с сайтами :D


20 дек 2015, 08:28
Профиль
Новичок

Зарегистрирован:
13 дек 2015, 14:08
Сообщения: 19
Поблагодарили: 0 раз.
Цитата:
Не всегда

ТС написал, что у него установлена ОС Centos.
Я говорил именно про centos.

Вариантов запуска apache от пользователя большое множество.


20 дек 2015, 12:03
Профиль
Новичок

Зарегистрирован:
18 дек 2015, 23:26
Сообщения: 14
Поблагодарили: 0 раз.
Откуда: Днепропетровск
Кодом php и по ps aux | grep apache говорит, что таки apache, если ps aux | grep httpd, то на из полтора десятка процессов один от root

psa, а не могли бы вы ткнуть конкретно, где эти логи gameap в консоли?


21 дек 2015, 23:18
Профиль
Специалист
Аватара пользователя

Зарегистрирован:
26 апр 2012, 16:48
Сообщения: 383
Поблагодарили: 4 раз.
А ps aux | grep httpd вы от root делаете? Не обращайте внимания на эту строку - это, собственно, процесс ps.


22 дек 2015, 02:08
Профиль
Новичок

Зарегистрирован:
18 дек 2015, 23:26
Сообщения: 14
Поблагодарили: 0 раз.
Откуда: Днепропетровск
kissbb писал(а):
А ps aux | grep httpd вы от root делаете? Не обращайте внимания на эту строку - это, собственно, процесс ps.

Да, команду выполняю от root. Да, в конце вывода grep - последняя строка от root, как я понимаю, это сам процесс ps...

Вобщем, вот так это выглядит:

root 2270 0.0 0.1 339644 14260 ? Ss Dec19 0:03 /usr/sbin/httpd
apache 5767 0.0 0.1 344040 14624 ? S Dec20 0:00 /usr/sbin/httpd
apache 5768 0.0 0.1 343000 13400 ? S Dec20 0:00 /usr/sbin/httpd
apache 5770 0.0 0.2 346520 16748 ? S Dec20 0:00 /usr/sbin/httpd
apache 5772 0.0 0.1 345240 15340 ? S Dec20 0:00 /usr/sbin/httpd
apache 5773 0.0 0.2 346480 16668 ? S Dec20 0:00 /usr/sbin/httpd
apache 5775 0.0 0.1 344160 14556 ? S Dec20 0:00 /usr/sbin/httpd
apache 5777 0.0 0.2 346764 16880 ? S Dec20 0:00 /usr/sbin/httpd
apache 5778 0.0 0.2 345240 16028 ? S Dec20 0:00 /usr/sbin/httpd
apache 9031 0.0 0.0 339644 7920 ? S Dec20 0:00 /usr/sbin/httpd
apache 10472 0.0 0.0 339644 7892 ? S Dec21 0:00 /usr/sbin/httpd
apache 10473 0.0 0.0 339644 7892 ? S Dec21 0:00 /usr/sbin/httpd
apache 10474 0.0 0.0 339644 7856 ? S Dec21 0:00 /usr/sbin/httpd
apache 11543 0.0 0.0 339644 7888 ? S Dec21 0:00 /usr/sbin/httpd
root 15089 0.0 0.0 103312 864 pts/3 S+ 01:31 0:00 grep httpd


22 дек 2015, 03:35
Профиль
Новичок

Зарегистрирован:
18 дек 2015, 23:26
Сообщения: 14
Поблагодарили: 0 раз.
Откуда: Днепропетровск
По прежнему нуждаюсь в помощи.

Переставил всё заново - ОС и панель. Игровые сервера и ПУ на одной машине. screen установлен.
Чего добился: выяснил, что в /etc/sudoers нужно кроме пользователя, от которого стартует web - сервер (в моем случае это, теоретически, apache, так как при ps aux | grep httpd один из процессов принадлежит root, и тут возникает коллизия - какой смысл root добавлять в /etc/sudoers, поэтому добавил apache), нужно добавить пользователя от которого, стартует игровой сервер. nb: при ps aux | grep apache все процессы принадлежат пользователю apache.

Вот пример запуска при условии, что пользователя нет в /etc/sudoers :

bash-4.1$ cd /var/www/games && sudo ./server.sh -t start -d /var/www/games/cs16 -n cstrike_OJiujm_27015 -i 127.0.0.1 -p 27015 -c "./hlds_run -game cstrike +ip 127.0.0.1 +port 27015 +maxplayers 32 +map de_dust2 +sys_ticrate 250" -s {net_limit} -f {cpu_limit} -m {ram_limit} -u mygame
[sudo] password for mygame:
mygame is not in the sudoers file. This incident will be reported.


Вот пример, когда пользователь внесен в /etc/sudoers :

bash-4.1$ cd /var/www/games && sudo ./server.sh -t start -d /var/www/games/cs16 -n cstrike_OJiujm_27015 -i 127.0.0.1 -p 27015 -c "./hlds_run -game cstrike +ip 127.0.0.1 +port 27015 +maxplayers 32 +map de_dust2 +sys_ticrate 250" -s {net_limit} -f {cpu_limit} -m {ram_limit} -u mygame
Server started


Остановка сервера:
bash-4.1$ cd /var/www/games && sudo ./server.sh -t stop -d /var/www/games/cs16 -n cstrike_OJiujm_27015 -i 127.0.0.1 -p 27015 -c "./hlds_run -game cstrike +ip 127.0.0.1 +port 27015 +maxplayers 32 +map de_dust2 +sys_ticrate 250" -s {net_limit} -f {cpu_limit} -m {ram_limit} -u mygame
No screen session found.
Server stopped


В ПУ игровой сервер установился, однако он никаким образом не реагирует на попытки его запуска:

Изображение


При этом этой же строкой из под пользователя того же, что указан и в ПУ как пользователь, от которого должен запускаться сервер, из консоли сервер запускается (см. выше)

Тут возникают вопросы:
Первое. Вот здесь ( http://wiki.hldm.org/%D0%92%D1%8B%D0%B4 ... %8B_GameAP ) сказано, что "если ваши игровые серверы располагаются на том же компьютере, что и АдминПанель, то в этом случае добавлять новый выделенный сервер не обязательно, но АдминПанель может работать с локальным сервером как с выделенным (по SSH или Telnet)", однако, когда я добавил игровой сервер выделенный сервер создался сам.

Изображение


Т.е., он таки нужен, этот выделенный сервер? Влияют ли его настройки в этом случае на запуск игровых серверов и нужен ли тогда прописывать доступ по ssh (ведь, теоретически зачем ему доступ, если игровые сервера в соседней папке?). Ниже показываю все его настройки (тут я ничего не трогал, я вообще случайно туда заглянул, так как знал, что никаких выделенных серверов я не создавал):

Изображение


Второе. Такой момент: когда я из консоли стартую сервер, то в ПУ не отображается, что он запущен! Т.е., получается, из панели вообще не видно, что происходит с игровым сервером, иными словами, связи между ПУ и сервером нет? Но с другой стороны ПУ видит, что сервер установлен. Вот тут непонятно.

Третье. Опишу как организована вообще работа ПУ с точки зрения web-сервера и пользователей. Пользователю mygame (от которого в настройках игрового сервера я пытаюсь этот сервер запускать) назначена домашней директорией папка /var/www. Начиная с www (и включая её) все вложенные папки и файлы принадлежат пользователю mygame (группа ftpus):

Изображение

Думаю, из скрина всё понятно: сама панель обретается в /var/www/panel.chaleira.in.ua/public_html, игровые сервера в /var/www/games (в этой папке лежит *server.sh, исполняемый), сам игровой сервер - в /var/www/games/cs16. Повторюсь, все это дело принадлежит пользователю mygame, от которого в ПУ пытаюсь запустить сервер. Может, что-то где-то не так с правами, с принадлежностью файлов и папок?

Четвертое. Где-то на форуме писалось, что настройка ЛОКАЛЬНОГО сервера происходит в файле /application/config/gameap_config.php. Вот этот файл (но я там ничего не настраивал, как я понял, настройки туда "пришли" из ПУ):

gameap_config.php [----] 0 L:[ 1+31 32/ 34] *(1540/1596b) 0047 0x02F


<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

$config['base_url'] = 'http://panel.chaleira.in.ua/';
$config['language'] = 'russian';
$config['template'] <--><------><------><------><------>= 'default';<--><------><------><------><------>// Используемый шаблон (директория в ./application/views)
$config['style'] <-----><------><------><------><------><------>= 'default';<--><------><------><------><------>// Используемый стиль для шаблона
$config['encryption_key'] = 'HpbNpkrIr7WB';

$config['local_os'] = 'Linux';
$config['local_script_path'] = '/var/www/games';
$config['local_steamcmd_path'] = '/var/www/games';

$config['email_sender_name']<--><------><------>= 'GameAP';<---><------><------><------><------><------>// Имя отправителя писем
$config['system_email'] = 'user@gmail.com';
$config['email_change_confirm']><------><------>= true;><------><------><------><------><------><------>// Подверждение смены email

$config['register_users'] <----><------><------><------>= false;<------><------><------><------><------><------>// Разрешить регистрацию пользователей

$config['delete_server_on_reinstall']<->= true;><------><------><------><------><------><------>// Удалять серверы при перезагрузке
$config['disable_sftp_search']<><------><------>= false;<------><------><------><------><------><------>// Отключить sftp поиск файлов

$config['captcha_driver']<-----><------><------><------>= 'codeigniter';<------><------><------><------>// Капча

// IP с которых можно авторизоваться под администратором
//~ $config['admin_ip']><------><------><------><------>= array('127.0.1.1', '127.0.0.1', '127.0.0.0/12', '133.7.0.0');

// SteamCMD
//$config['steamcmd_login']<---><------><------><------>= 'example';
//$config['steamcmd_password']<><------><------>= 'passexample123';

/* End of file gameap_config.php */
/* Location: ./application/config/gameap_config.php */


Пятое. Даю также настройки самого игрового сервера:

Изображение


Вобщем, я пока не могу осилить логику работы ПУ, потому буду рад любой помощи. Если нужно что-то еще показать, какие-то настройки, логи - скажите только, что ;)

С Уважением, punker


23 дек 2015, 03:14
Профиль
Специалист
Аватара пользователя

Зарегистрирован:
10 июн 2012, 07:14
Сообщения: 391
Поблагодарили: 5 раз.
По моему, в команде запуска сервера (последние скриншоты) надо попробовать вместо {ip} поставить 0.0.0.0, чтобы сервер слушал везде. Возможно это поможет, потому что я всегда при установке так настраиваю.


23 дек 2015, 07:58
Профиль
Показать сообщения за:  Поле сортировки  
Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней.   [ Сообщений: 10 ] 

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
cron


HLDM.ORG 2011-2013