Etapas para permitir que meu usuário execute um comando complexo no login

1

Eu já estraguei meu sistema uma vez , então vou perguntar mais especificamente:

Quais são as etapas a serem executadas para que o comando possa ser executado com privilégios sudo na inicialização?

Aqui está o que eu sei até agora: Eu tenho este comando, contendo "":

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"

Eu fui para Preferences -> Default applications for LXSession e adicionei a linha: lxterminal -e COMMAND à seção autostart.

Isso inicia um terminal executando meu comando (neste caso, iniciando o meu gerenciador de servidores de minecraft). Algo dentro deste processo precisa de permissões sudo. Como eu mesmo escrevi este programa e desde que eu confio no Mojang, eu só quero rodar este comando no nível do sudo sem precisar digitar minha senha.

Eu tentei usar sudo visudo para dar ao meu usuário os direitos para executá-lo sem digitar uma senha. Eu não pareço acertar a sintaxe.

Aqui está como eu acho que deveria ser:

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"

Onde está o erro aqui?

Eu adoraria se você pudesse responder passo a passo. Talvez eu tenha usado a linha errada para digitar ou o que quer que seja.

    
por codepleb 29.11.2016 / 20:50

1 resposta

2

Normalmente, você usaria um serviço para ser executado como um usuário específico em um determinado momento durante a inicialização.

Acho que a solução ideal para "Como executar um servidor Minecraft no login" é criar um novo usuário, minecraft , e garantir que seu servidor HTTP ( apache ou nginx ) tenha acesso a esses arquivos gerados por overviewer . Quando você executa overviewer , deseja fazer isso como o usuário minecraft .

O seguinte assume que /home/minecraft/minecraft-1.7/ é o diretório que contém os arquivos do servidor de minecraft, como o diretório world , e que, dentro desse diretório, você tem minecraft_server.jar. Além disso, nginx é usado para atuar como um servidor HTTP.

Você pode criar esse usuário com sudo useradd minecraft -m . Por não definir uma senha, você só poderá se tornar esse usuário com sudo su - minecraft .

O usuário minecraft teria a seguinte entrada 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/

O ideal é que você execute o servidor Minecraft usando o upstart ( /etc/systemd/system/minecraft-server.service ):

[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

Habilite-o para iniciar na inicialização com sudo systemctl enable minecraft-server e diga para começar agora com sudo systemctl start minecraft-server .

... enquanto configura o NGINX com:

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;
    }

}

Não existe nenhuma razão para executar minecraft , overviewer , etc como root e deve ser evitado.

    
por earthmeLon 29.11.2016 / 21:45