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

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

/home/linux/start

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

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

sudo -u linux /home/linux/start

или же

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). Как я могу решить проблему?

Startscript:

#!/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 (debian-kernel@lists.debian.org) (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 с помощью putty. Но это все еще не работает.

1 ответ

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

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

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

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

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

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

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

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

Другие вопросы по тегам