0

我正在运行一个 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 运行它时,用户 ID 仍然是 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 (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"

我希望这与使用 putty 在 ssh 上执行此操作相同。但它仍然不起作用。

4

1 回答 1

0

您的服务器似乎需要pulseaudio(用于声音输出?这是什么类型的服务器?)

现在,当您以root身份登录时,root会启动 pulseaudio 服务,该服务会创建一些由root拥有的文件(例如/run/user/0/pulse机器正在窃听坐在键盘后面的人,是吗?)

为了防止这个问题,你有几个选择(最好的第一个;最差的最后一个):

  • 根本不要以root身份登录。(自动)以用户linux登录并启动服务器。

  • 禁用服务器的音频支持(它真的需要播放声音或从麦克风录制吗?)

  • 在运行您的启动之前停止 root 拥有的 pulseaudio;手动启动用户拥有的pulseaudio(或希望您的服务器会自动生成一个)

  • 配置您的音响系统以允许多个用户连接到单个会话

  • 只需授予读取/写入有问题文件的权限即可。类似于(作为根):chown -R linux /run/user/0/pulsesudo -line之前

于 2015-06-23T13:47:17.440 回答