我刚接触过Linux,4个月前刚从Windows转过来。我正在尝试使用这教程安装一个“我的世界”服务器,当我试图通过systemd启动服务器并检查它的状态时,我一直得到它:
Loaded: loaded (/etc/systemd/system/minecraft.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2022-07-19 22:32:20 PDT; 6s ago
Process: 21308 ExecStart=/usr/bin/java -Xmx1024M -Xms1024M -jar server.jar nogui (code=exited, status=200/CHDIR)
Main PID: 21308 (code=exited, status=200/CHDIR)
CPU: 14ms
Jul 19 22:32:20 myname-ThinkPad systemd[1]: Started Minecraft Server.
Jul 19 22:32:20 myname-ThinkPad systemd[21308]: minecraft.service: Changing to the requested working directory failed: Permission denied
Jul 19 22:32:20 myname-ThinkPad systemd[21308]: minecraft.service: Failed at step CHDIR spawning /usr/bin/java: Permission denied
Jul 19 22:32:20 myname-ThinkPad systemd[1]: minecraft.service: Main process exited, code=exited, status=200/CHDIR
Jul 19 22:32:20 myname-ThinkPad systemd[1]: minecraft.service: Failed with result 'exit-code'.我确实在一些地方偏离了教程,我相信这就是问题所在。出于几个原因,我使用自己的用户配置文件来安装服务器,而不是单独安装服务器,但我确保相应地更改路径。我还必须安装Oracle,因为OpenJDK在安装服务器文件时遇到了问题(我使用的是1.19而不是本教程中链接的1.16 )。
以下是systemd文件:
[Unit]
Description=Minecraft Server
After=network.target
[Service]
User=myname
Nice=1
KillMode=none
SuccessExitStatus=0 1
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/home/myname/mc_server/server
ExecStart=/usr/bin/java -Xmx1024M -Xms1024M -jar server.jar nogui
ExecStop=/home/myname/mc_server/tools/mcrcon/mcrcon -H 127.0.0.1 -P 25575 -p serverpasswd stop
[Install]
WantedBy=multi-user.target所以,我想我的问题是,有什么方法可以解决这个问题,而不需要制作单独的用户配置文件或返回到OpenJDK (扩展来说,是游戏的旧版本)?
发布于 2022-07-20 21:31:59
问题在于您设置了ProtectHome=true,这限制了服务对/home的访问,但也希望将服务设置为cd到/home。它不能这样做,因为它被设置为ProtectHome,因此它给出了您看到的错误:
Changing to the requested working directory failed: Permission denied解决这一问题的办法是:
/opt中,或者ProtectHome行,以便允许服务访问/home。https://askubuntu.com/questions/1419541
复制相似问题