GameAP. Web-панель управления игровыми серверами

Обсуждаем все, что относится к выделенным серверам *NIX (Unix, Linux) и Windows

0
Голосов нет
 
Всего голосов: 0

Сообщение
Автор
Аватара пользователя
master512
Нович0к
Нович0к
Сообщения: 25
Зарегистрирован: 29.06.2011
Поблагодарили: 11 раз

#31 Сообщение 27.01.2014, 00:36

BearDED писал(а): Ввожу строку которую дает мне панель, от этого пользователя, далее спрашивается пароль, ввожу- все запускается
Панель не умеет вводить пароли при запуске сервера.

Аватара пользователя
__A
Капитан
Капитан
Сообщения: 392
Зарегистрирован: 03.02.2009
Благодарил (а): 38 раз
Поблагодарили: 113 раз

#32 Сообщение 14.03.2014, 18:40

master512 писал(а):Панель не умеет вводить пароли при запуске сервера.
Проблему не решил. Подскажите как правильно это сделать, может я что-то недопонимаю.
Добавил запись в sudoers:
servers ALL = NOPASSWD: /home/servers/server.sh

при запуске скрипта от пользователя все равно просит пароль, что не так?
Или скрипт от рута должен запускаться? -.-

Pedobir
Лейтенант
Лейтенант
Сообщения: 212
Зарегистрирован: 31.03.2013
Поблагодарили: 83 раза

#33 Сообщение 14.03.2014, 20:10

Пользователь servers входит в группу users ?

Аватара пользователя
__A
Капитан
Капитан
Сообщения: 392
Зарегистрирован: 03.02.2009
Благодарил (а): 38 раз
Поблагодарили: 113 раз

#34 Сообщение 14.03.2014, 21:05

Pedobir писал(а):Пользователь servers входит в группу users ?
Да, и в sudo добавлял, не понимаю что еще нужно.

Pedobir
Лейтенант
Лейтенант
Сообщения: 212
Зарегистрирован: 31.03.2013
Поблагодарили: 83 раза

#35 Сообщение 14.03.2014, 23:08

BearDED
Покажите свои /etc/sudoers, /etc/group, /etc/passwd.
Что показывают команды grpck и grpconv? Ну и самое главное: а вы заглядывали /var/log/auth.log?

Аватара пользователя
__A
Капитан
Капитан
Сообщения: 392
Зарегистрирован: 03.02.2009
Благодарил (а): 38 раз
Поблагодарили: 113 раз

#36 Сообщение 15.03.2014, 17:32

sudoers
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL:ALL) ALL
servers ALL = NOPASSWD: /home/servers/server.sh

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:a
floppy:x:25:a
tape:x:26:
sudo:x:27:servers
audio:x:29:a
dip:x:30:a
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:a
sasl:x:45:
plugdev:x:46:a
staff:x:50:
games:x:60:
users:x:100:servers
nogroup:x:65534:
libuuid:x:101:
crontab:x:102:
a:x:1000:
ssh:x:103:
ntp:x:104:
ssl-cert:x:105:
postfix:x:106:
postdrop:x:107:
usrnmrih53786:x:1001:
sambashare:x:108:a
messagebus:x:109:
servers:x:1002:
Pedobir писал(а):Ну и самое главное: а вы заглядывали /var/log/auth.log?
Что я должен там увидеть? Если авторизацию панели, то она проходит.
Я сейчас руками этот скрипт пускаю, с теми параметрами, что дает панель.
Дело в том, что все останавливается на запросе пароля, я ввожу его руками и сервак запускается.

Pedobir
Лейтенант
Лейтенант
Сообщения: 212
Зарегистрирован: 31.03.2013
Поблагодарили: 83 раза

#37 Сообщение 15.03.2014, 19:20

BearDED
Покажите сам скрипт. Вы случаем su (без судо) туда не запихали?

Аватара пользователя
__A
Капитан
Капитан
Сообщения: 392
Зарегистрирован: 03.02.2009
Благодарил (а): 38 раз
Поблагодарили: 113 раз

#38 Сообщение 15.03.2014, 19:56

Ничего не пихал)
server.sh
#!/bin/bash

#
# Скрипт запуска HLDS сервера
#
# Autor: ET-NiK
# Site 1: http://www.gameap.ru
# Site 2: http://hldm.org
#
# Данный скрипт используется для управления игровыми серверами через АдминПанель
#
#
# Параметры запуска
#
# @command - команда (start|stop|restart|status|get_console)
# @dir - директория относительно скрипта
# @name - имя для screen
# @serverip - ip сервера
# @port - порт сервера
# @start_command - команда для сервера (напр. 'hlds_run -game valve +ip 127.0.0.1 +port 27015 +map crossfire')
# @user - пользователь, под которым будет запущен игровой сервер (если пусто, то будет использован root)
#
# Example:
# ./server.sh start /home/hl_server screen_hldm 127.0.0.1 27015 "hlds_run -game valve +ip 127.0.0.1 +port 27015 +map crossfire" user
#
#
#

PATH=/bin:/usr/bin:/sbin:/usr/sbin

# Раскомментируйте строчку ниже, если не запускается игровой сервер
# во многих случаях, особенно для виртуальных серверов, это помогает
#export CPU_MHZ=2000

# Directory
DIR=$2

PIDFILE_NAME="server.pid"
PIDFILE="$DIR/$PIDFILE_NAME"

# Screen Name
NAME=$3

# IP
SERVER_IP=$4

# Port
SERVER_PORT=$5

# Command
COMMAND=$6

if [[ $7 == '' ]]
then
USER=$(whoami)
else
USER=$7
fi

case "$1" in
start)
if [[ `su $USER -c "screen -ls |grep $NAME"` ]]
then
echo "Server is already running"
else
su $USER -c "cd $DIR; screen -m -d -S $NAME $COMMAND"
sleep 4

if [[ `su $USER -c "screen -ls |grep $NAME"` ]]
then
echo "Server started"
else
echo -e "Server not started \nStart command:"
echo su $USER -c "cd $DIR; screen -m -d -S $NAME $COMMAND"
fi
fi
;;

stop)
if [[ `su $USER -c "screen -ls |grep $NAME"` ]]
then
kill `ps aux | grep -v grep | grep -i $USER | grep -i screen | grep -i $NAME | awk '{print $2}'`
su $USER -c "screen -X -S $NAME kill"
echo "Server stopped"
else
echo "Coulnd't find a running server"
fi
;;

restart)
if [[ `su $USER -c "screen -ls |grep $NAME"` ]]
then
kill `ps aux | grep -v grep | grep -i $USER | grep -i screen | grep -i $NAME | awk '{print $2}'`
su $USER -c "screen -X -S $NAME kill"
sleep 2

su $USER -c "cd $DIR; screen -m -d -S $NAME $COMMAND"
sleep 4

if [[ `su $USER -c "screen -ls |grep $NAME"` ]]
then
echo "Server restarted"
else
echo -e "Server not restarted \nStart command:"
echo su $USER -c "cd $DIR; screen -m -d -S $NAME $COMMAND"
fi
else
echo "Coulnd't find a running server"
fi
;;
status)
if [ -e ${PIDFILE} ] && [ $(ps -p $(cat ${PIDFILE})|wc -l) = "2" ] ;
then
echo "Server is UP"
else
echo "Server is Down"
fi
;;
get_console)

if [[ $4 == '' ]]
then
USER=$(whoami)
else
USER=$4
fi

su $USER -c "screen -S $NAME -X -p 0 hardcopy -h $DIR/console.txt && chmod 666 $DIR/console.txt"
RESULT=`cat $DIR/console.txt`
echo -e "$RESULT"
;;
*)
echo "Usage all parameters"
exit 1
;;
esac

exit 0

Pedobir
Лейтенант
Лейтенант
Сообщения: 212
Зарегистрирован: 31.03.2013
Поблагодарили: 83 раза

#39 Сообщение 16.03.2014, 12:38

BearDED
И последний вопрос: а вы собственно как этот скрипт запускаете? ./server.sh или sudo ./server.sh ???

Аватара пользователя
__A
Капитан
Капитан
Сообщения: 392
Зарегистрирован: 03.02.2009
Благодарил (а): 38 раз
Поблагодарили: 113 раз

#40 Сообщение 16.03.2014, 13:40

Проще скажу, я ничего не предпринимал, как было в манах так и делал, больше ничего не выдумывал.
Панель дает ошибку запуска:
тык
Изображение
Далее я беру эту строку, захожу под этим пользователем и тупо ее вставляю, далее ентер, пароль- сервак запускается.

Non_Stop
Капитан
Капитан
Сообщения: 255
Зарегистрирован: 27.07.2010
Благодарил (а): 1 раз
Поблагодарили: 28 раз
Контактная информация:

#41 Сообщение 16.03.2014, 13:57

BearDED писал(а):
sudoers
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root ALL=(ALL:ALL) ALL
servers ALL = NOPASSWD: /home/servers/server.sh

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:a
floppy:x:25:a
tape:x:26:
sudo:x:27:servers
audio:x:29:a
dip:x:30:a
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:a
sasl:x:45:
plugdev:x:46:a
staff:x:50:
games:x:60:
users:x:100:servers
nogroup:x:65534:
libuuid:x:101:
crontab:x:102:
a:x:1000:
ssh:x:103:
ntp:x:104:
ssl-cert:x:105:
postfix:x:106:
postdrop:x:107:
usrnmrih53786:x:1001:
sambashare:x:108:a
messagebus:x:109:
servers:x:1002:
Pedobir писал(а):Ну и самое главное: а вы заглядывали /var/log/auth.log?
Что я должен там увидеть? Если авторизацию панели, то она проходит.
Я сейчас руками этот скрипт пускаю, с теми параметрами, что дает панель.
Дело в том, что все останавливается на запросе пароля, я ввожу его руками и сервак запускается.
есть такая софтина как sshpass, если это то о чём я подумал.

Добавлено спустя 2 минуты 2 секунды:
BearDED писал(а):Проще скажу, я ничего не предпринимал, как было в манах так и делал, больше ничего не выдумывал.
Панель дает ошибку запуска:
тык
Изображение
Далее я беру эту строку, захожу под этим пользователем и тупо ее вставляю, далее ентер, пароль- сервак запускается.
если с панелью есть демон, можно прочитать его логи( они должны быть ), и посмотреть что он делает в момент запуска.
Или же если там напрямую к ссх, поставить юзеру /bin/bash и просто потом зайти и полистать какие команды были выполнены.
VDS хостинг от 1.5$. Защита от DDOS. Частота CPU от 3.5 МГЦ
Идеальное предложение для игрового сервера. Хостинг VDS

Pedobir
Лейтенант
Лейтенант
Сообщения: 212
Зарегистрирован: 31.03.2013
Поблагодарили: 83 раза

#42 Сообщение 16.03.2014, 15:02

Non_Stop
BearDED
Всё очень просто: если откроете server.sh и сделаете поиск по слову sudo - вы не найдёте ни одного вхождения. Это значит что эта команда просто не используется в этом скрипте. А тогда возникает резонный вопрос: накуя вообще нужны были танцы вокруг sudo? В команде из вашей панели также нет sudo. Соответственно в вашей команде (та что была показана в панели) после сдвоенного амперсанда добавьте sudo и будет вам счастье )

Аватара пользователя
__A
Капитан
Капитан
Сообщения: 392
Зарегистрирован: 03.02.2009
Благодарил (а): 38 раз
Поблагодарили: 113 раз

#43 Сообщение 16.03.2014, 15:13

Pedobir писал(а):после сдвоенного амперсанда добавьте sudo и будет вам счастье
Далее он так же попросит пароль, а
master512 писал(а):Панель не умеет вводить пароли при запуске сервера.
или я все таки не правильно прописал в sudoers?

Non_Stop
Капитан
Капитан
Сообщения: 255
Зарегистрирован: 27.07.2010
Благодарил (а): 1 раз
Поблагодарили: 28 раз
Контактная информация:

#44 Сообщение 16.03.2014, 16:06

BearDED писал(а):
Pedobir писал(а):после сдвоенного амперсанда добавьте sudo и будет вам счастье
Далее он так же попросит пароль, а
master512 писал(а):Панель не умеет вводить пароли при запуске сервера.
или я все таки не правильно прописал в sudoers?
да не надо ничего никуда прописывать
sudo -u "имя юзера" "команда" - от root юзера, будет выполнена как от пользователя(без ""), главное что бы у него были права ssh
ВСЁ, нет там никаких паролей, ничего никуда не надо писать, всё просто и ясно как день, я её даже не качал но и так понятно, что какие-то бубны с sudoers и паролями это бред.
Кому сильно хочется пароль, ставите sshpass, запускаете так sshpass -p password дальше уже та команда, при которой этот пароль запрашивается.
Лекция закончена.
VDS хостинг от 1.5$. Защита от DDOS. Частота CPU от 3.5 МГЦ
Идеальное предложение для игрового сервера. Хостинг VDS

Pedobir
Лейтенант
Лейтенант
Сообщения: 212
Зарегистрирован: 31.03.2013
Поблагодарили: 83 раза

#45 Сообщение 16.03.2014, 18:02

BearDED
В /etc/sudoers у вас всё правильно написано, а вот в /etc/group пользователя servers я бы убрал из группы sudo (эта группа вообще, на мой взгляд атавизм и никому не нужна в 99,99% случаях). Так как в /etc/sudoers политика "%sudo ALL=(ALL:ALL) ALL" обрабатывается последней и скорее всего именно она и перекрывает предыдущую "servers ALL = NOPASSWD: /home/servers/server.sh". Либо переместите её ("servers ALL = NOPASSWD: /home/servers/server.sh") в самый конец /etc/sudoers
Non_Stop
Если проблему можно решить "штатными" средствами на фига ставить дополнительные инструменты? Имхо: это не верный подход.

Ответить Вложения 2