自动让我的用户在登录时运行复杂命令的步骤

自动让我的用户在登录时运行复杂命令的步骤

我已经把我的系统搞砸了一次,所以我要更具体地问:

要执行哪些步骤,才能使命令在启动时以 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 服务器(apachenginx)可以访问由生成的那些文件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 -eas 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避免。

相关内容