我已经把我的系统搞砸了一次,所以我要更具体地问:
要执行哪些步骤,才能使命令在启动时以 sudo 权限运行?
这是我目前所知道的:我有这个命令,包含“”:
java -jar /home/joe/minecraft/minecraft_server/MCpal.jar /media/joe/Chest/mc_backups 12288 server.jar "overviewer.py --rendermodes=smooth-lighting {2}/Galamor /home/joe/minecraft/Overviewer/map"
我前往Preferences -> Default applications for LXSession
并添加了该行:lxterminal -e COMMAND
到自动启动部分。
这将启动一个终端,运行我的命令(在本例中,启动我的 minecraft 服务器管理器)。此过程中的某些内容需要 sudo 权限。由于这个程序是我自己编写的,而且我信任 Mojang,所以我只想在 sudo 级别运行此命令,而无需输入密码。
我尝试过sudo visudo
授予我的用户运行它的权限而无需输入密码。我似乎没有正确使用语法。
我认为应该是这样的:
joe ALL=(ALL) NOPASSWD: java -jar /home/joe/minecraft/minecraft_server/MCpal.jar /media/joe/Chest/mc_backups 12288 server.jar "overviewer.py --rendermodes=smooth-lighting {2}/Galamor /home/joe/minecraft/Overviewer/map"
这里的错误在哪里?
如果您能一步一步地回答我会非常高兴。也许我输入的行数不对,或者其他原因。
答案1
通常,您会使用某个服务在启动期间的特定时间以特定用户身份运行。
我认为“如何在登录时运行 Minecraft 服务器”的理想解决方案是创建一个新用户,minecraft
并确保您的 HTTP 服务器(apache
或nginx
)可以访问由生成的那些文件overviewer
。运行 时overviewer
,您希望以用户身份执行此操作minecraft
。
以下假设是/home/minecraft/minecraft-1.7/
包含您的 minecraft 服务器文件的目录,例如world
目录,并且在该目录中,您有 minecraft_server.jar。此外,nginx
还用作 HTTP 服务器。
您可以使用 创建此用户sudo useradd minecraft -m
。如果不设置密码,您只能使用 成为此用户sudo su - minecraft
。
用户minecraft
将拥有以下 cron 条目(crontab -e
as minecraft
):
0 * * * * /usr/bin/overviewer.py --rendermodes=smooth-lighting,cave /home/minecraft/minecraft-1.7/world/ /home/minecraft/minecraft-1.7/www-overviewer/
理想情况下,你将使用 upstart ( /etc/systemd/system/minecraft-server.service
) 运行 Minecraft 服务器:
[Unit]
Description=Minecraft Server
[Service]
WorkingDirectory=/home/minecraft/minecraft-1.7/
User=minecraft
Group=minecraft
Restart=on-failure
RestartSec=20 5
ExecStart=/usr/bin/java -Xms1536M -Xmx1536M -jar minecraft_server.jar nogui
[Install]
WantedBy=multi-user.target
启用它在启动时使用sudo systemctl enable minecraft-server
,并告诉它现在使用 启动sudo systemctl start minecraft-server
。
...当你配置 NGINX 时:
server {
listen 8888;
client_max_body_size 50M;
server_name _ minecraft.DOMAIN.tld
charset UTF-8;
expires max;
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 4;
gzip_http_version 1.0;
gzip_min_length 1280;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
gzip_vary on;
gzip_static on;
add_header Cache-Control "public";
location / {
root /home/minecraft/minecraft-1.7/www-overviewer;
}
}
有不以 root 身份运行、等的原因minecraft
应予overviewer
避免。