You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 22下为steam用户创建CS2服务器非Root systemd服务求助

Ubuntu 22下为steam用户创建CS2服务器非Root systemd服务求助

看起来你已经找对了方向,但大概率是服务文件的细节配置或者权限问题导致没生效,我来帮你一步步排查和修正:

1. 先确认脚本的基础权限

首先得保证steam用户能正常执行cs2-server脚本,先检查并调整权限:

# 给脚本加上执行权限
sudo chmod +x /usr/local/bin/cs2-server
# 检查目录权限,确保steam能访问该目录
ls -ld /usr/local/bin

如果/usr/local/bin的权限不是rwxr-xr-x(即其他用户有读和执行权限),可以用sudo chmod 755 /usr/local/bin调整。

2. 修正systemd服务文件的关键配置

你的原始服务文件缺少几个关键项,比如工作目录、环境变量——手动运行时你在steam用户的shell环境里,而systemd默认没有这些上下文。这里给你一个修正后的版本:

[Unit]
Description=CS2 Public Server 1
After=network.target network-online.target
Wants=network-online.target  # 确保网络完全就绪再启动服务

[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/cs2-server  # 替换成你的CS2服务器实际安装目录!
ExecStart=/usr/local/bin/cs2-server @public1 start
Restart=on-failure
RestartSec=5
Type=simple  # 如果你的脚本是前台运行(手动启动后不会立刻返回shell)就用这个;如果脚本会后台fork,换成Type=forking
Environment="HOME=/home/steam"  # 确保steam用户的HOME环境变量正确加载
# 如果脚本依赖其他环境变量,比如STEAM_PATH,可以在这里添加,比如 Environment="STEAM_PATH=/home/steam/steamcmd"

[Install]
WantedBy=multi-user.target

3. 重新部署并启动服务

把上面的服务文件保存到/etc/systemd/system/cs2-public1.service,然后执行以下命令:

# 重新加载systemd配置
sudo systemctl daemon-reload
# 设置开机自启
sudo systemctl enable cs2-public1.service
# 启动服务
sudo systemctl start cs2-public1.service

4. 排查启动失败的方法

如果启动还是有问题,直接看日志找具体原因:

journalctl -u cs2-public1.service -f

日志里会明确告诉你是权限不足、找不到文件,还是环境变量缺失,针对性调整就行。

关于密码的问题

只要服务文件里指定了User=steam,服务就会以steam用户身份运行,完全不需要输入密码——systemd会直接切换到该用户执行,和你手动su steam后运行的权限完全一致。

备注:内容来源于stack exchange,提问作者lostsoul6

火山引擎 最新活动