Запуск скрипта через SSH работает. Но через xinetd или после смены пользователя работать не будет

Я запускаю сервер 7Days to Die. Обычно я подключаюсь по ssh с пользователем «linux» и запускаю команду:

/home/linux/start

Все работает, сервер работает.

Но когда я переключаю пользователя на root (su root) и запускаю:

sudo -u linux /home/linux/start

or

sudo -u linux -i bash -c '/home/linux/start'

сервер отключается через 5 минут, и я получаю это в файле журнала:

Failed to create secure directory (/run/user/0/pulse): Permission denied
Failed to create secure directory (/run/user/0/pulse): Permission denied
Failed to create secure directory (/run/user/0/pulse): Permission denied

и после некоторых строк я также получаю:

2015-06-23T12:12:15 17,008 INF Disconnect
2015-06-23T12:12:15 17,008 INF NET: Stopping server protocols
Platform assembly: /home/linux/7daysded/7DaysToDie_Data/Managed/Mono.Security.dll (this message is harmless)
2015-06-23T12:12:15 17,054 INF NET: Untiy NW server stopped
2015-06-23T12:12:15 17,055 INF [Steamworks.NET] NET: Server stopped
2015-06-23T12:12:15 17,055 INF [NET] ServerShutdown

То же самое касается xinetd. Когда сервер xinetd пытается запустить скрипт, он тоже падает.

Я предполагаю, что когда я запускаю его через sudo или xinetd, идентификатор пользователя по-прежнему равен 0 (root) вместо 1000 (linux). Как я могу решить проблему?

Стартовый скрипт:

#!/bin/bash

if pgrep "7DaysToDie." > /dev/null
then
    exit
else

cd /home/linux
screen -A -m -d -S 7DaysServer /home/linux/7daysded/startserver.sh -configfile=serverconfig.xml
screen -ls
fi

Немного информации о моей системе:

Debian Version 8.1

Linux version 3.16.0-4-amd64 ([email protected]) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24)

Спасибо и С уважением,

Патрик

ОБНОВИТЬ:

я пытался запустить как root:

ssh -t linux@localhost -p 1111 "/home/linux/restart"

Я надеялся, что это будет так же, как делать это по ssh с замазкой. Но это все еще не работает.


person PaddyB    schedule 23.06.2015    source источник
comment
Кстати, Stack Overflow — это форум программистов; общие вопросы о компьютерах можно задать привилегированному пользователю (вы можете попросить модераторов перенести ваш вопрос)   -  person umläute    schedule 23.06.2015


Ответы (1)


похоже, что ваш сервер требует pulseaudio (для вывода звука? что это за сервер?)

теперь, когда вы входите в систему как root, root запускает службу pulseaudio, которая создает несколько файлов, принадлежащих root (например, /run/user/0/pulse), и которые нечитаемы другими пользователями (это намеренно: вы же не хотите, чтобы каждый, кто может войти в систему, подслушивал человека, сидящего за клавиатурой, не так ли?)

чтобы предотвратить эту проблему, у вас есть несколько вариантов (лучший первый, худший последний):

  • вообще не входите в систему как root. (автоматически) войдите в систему как пользователь linux и запустите сервер.

  • отключить поддержку звука для сервера (неужели ему нужно воспроизводить звуки или записывать с микрофона?)

  • остановите пульсаудио, принадлежащее root, перед запуском вашего запуска; либо вручную запустите пользовательский пульсаудио (или надейтесь, что ваш сервер автоматически создаст его)

  • настроить звуковую систему, чтобы несколько пользователей могли подключаться к одному сеансу

  • просто предоставьте разрешения на чтение/запись проблемных файлов. что-то вроде (от root): chown -R linux /run/user/0/pulse перед строкой sudo

person umläute    schedule 23.06.2015