Como posso permitir que um usuário priorize um processo para uma gentileza negativa?

9

Eu quero que um usuário execute um processo específico no sistema com um valor bom negativo. Eu não posso simplesmente bifurcar o processo para o plano de fundo como este programa específico é um servidor de minecraft e confio na linha de comando para controlar o servidor.

Meu script atual parece com isso (a parte importante):

sleep 10 && \
sudo renice -n $NICENESS $(ps -u $(id -u) -o "%p:%c" | sed -n "s/:java$//p") & \
java -Xmx8G -Xms2G -jar minecraft_server.jar nogui    

sleep simplesmente atrasa a execução de renice . renice usa ps para verificar um processo java usando o ID do próprio usuário. Pode haver outras instâncias de java spawning sob diferentes usuários, mas o servidor minecraft é executado sob seu próprio usuário minecraft .

Eu obviamente não quero digitar uma senha toda vez que eu iniciar o servidor.
de / etc / sudoers :

minecraft ALL = NOPASSWD: /etc/renice

Existe uma maneira mais elegante de fazer isso? Simplesmente usando nice não é uma opção, sudo nice bash em combinação com a opção NOPASSWD: seria um grande problema de segurança.

    
por Baarn 28.11.2013 / 14:49

2 respostas

7

O módulo pam_limits.so pode ajudá-lo.

Ele permite que você defina determinados limites para usuários individuais e grupos específicos ou curingas ou intervalos de usuários e grupos.

Os limites que você pode definir são normalmente as configurações ulimit, mas também o número de sessões de login simultâneas, processos, tempo de CPU, prioridade padrão e prioridade máxima (renice). Verifique a página do manual limits.conf para mais.

Por exemplo, você pode configurar seu grupo de mentes para ter todos os processos iniciados com uma prioridade padrão aumentada e permitir que eles usem os comandos nice e renice para aumentar a prioridade de seus trabalhos importantes manualmente, em vez de apenas reduzir a prioridade .

# /etc/security/limits.conf
# increase default and max prio for members of the mindcraft group
@mindcraft   hard priority -10
@mindcraft   hard nice     -18   
    
por 28.11.2013 / 15:29
1

Usar renice sem sudo seria impossível. Cito a partir da página renice(1) man:

Users other than the super-user may only alter the priority of processes they own, and can only monotonically increase their ''nice value'' (for security reasons) within the range 0 to PRIO_MAX (20), unless a nice resource limit is set (Linux 2.6.12 and higher).

    
por 28.11.2013 / 14:55