Bom comando sem privilégios de root

4

Eu preciso executar dosemu com nice --20 do script. O problema é: um valor negativo pode ser aplicado apenas com o sudo.

Você conhece alguma maneira de executar o comando nice sem sudo ou simplesmente executar nice --20 dosemu do script?

    
por Tomasz Matoga 21.08.2012 / 12:00

3 respostas

3

Infelizmente, não acho que isso seja facilmente factível.

Se o processo do dosemu for executado como um usuário separado, você poderá definir a prioridade de todos os processos desse usuário para um valor negativo usando /etc/security/limits.conf .

EDIT: bobagem comigo, você não pode criar um script de shell suid, isso simplesmente não funciona.

EDIT2: OK, você pode configurar o sudo de forma que ele não exija que você forneça a senha quando alguém do grupo sudo for executado ou renegado. Em uma janela de terminal, digite

sudo visudo

Isso abrirá um editor de texto simples que editará a configuração do sudo. Adicione a seguinte linha no final do arquivo:

%sudo   ALL = (ALL) NOPASSWD: /usr/bin/nice,/usr/bin/renice

Saia do editor. O editor irá certificar-se de que a sintaxe está correta (caso contrário, pode-se quebrar o sistema). Agora você pode correr

sudo nice -n -20 sudo -u $USER /some/program

e você não será solicitado por uma senha. Na verdade, o nice iniciará outro processo chamado sudo com a prioridade -20. Este novo processo sudo irá voltar para o seu usuário original ( -u $USER , caso contrário você executaria o / algum / programa como root) e inicia / algum / programa.

    
por January 21.08.2012 / 12:18
0

tente isto:

sudo -k nice -n -20 su -c "dosemu" $USER

enquanto estiver em execução, execute isto:

ps -A --forest -o pid,user,command |grep dosemu

você verá que nice foi executado com privilégios de root, mas dosemu foi executado normalmente como $ USER.

Entenda como é seguro : para ter certeza de que não há falha, tente isso onde você verá a senha 2 vezes, porque sudo ls é executado como $ USER, então um script com sudo não funciona sem ser visto:

sudo -k nice -n -5 su -c "sudo ls" $USER

e isso pedirá senha apenas uma vez, já que é root para sudo ls :

sudo -k nice -n -5 su -c "sudo ls" root

PS .: em vez do dosemu, para testes, usei sleep 120 e sudo -k é para maior segurança.

    
por Aquarius Power 25.06.2013 / 12:21
0

Experimente: sudo -s -H

Ele faz o login como root, depois do qual você não precisa do sudo.

Em seguida, execute seu script.

    
por Samuel Ralak 25.06.2013 / 12:27

Tags