Como eu inicio um processo com um bom valor de -20 e não dou privilégio de root?

15

Eu gostaria de iniciar um processo com um bom valor de -20. Isso requer que eu use um comando como - sudo nice -n -20 matlab . No entanto, isso também inicia o matlab como root. Existe uma maneira de ter o matlab como não-raiz?

Minha abordagem atual é - sudo nice -n -20 sudo -u myusername matlab - que, para mim, parece um hack. Existe uma abordagem direta para fazer isso?

    
por Lord Loh. 18.04.2013 / 21:39

7 respostas

19

Eu começaria normalmente e usaria "renice" depois ...

No entanto, eu pude fazer um rápido hack com "su", que funciona:

sudo nice -n -20 su -c command_to_run user_to_run_as

(Se você não tem que dar uma senha ao sudo - talvez porque você já tenha acabado de dar - você pode adicionar um "&" para colocar tudo em segundo plano.)

Como você já é root com o comando sudo, o su não lhe pedirá uma senha. Consegui iniciar um programa-X a partir de um emulador de terminal em X. Se você quiser executar o programa-X como outro usuário que não o usuário que possui a sessão-X, provavelmente precisará informar explicitamente ao X para permitir isso (aberto para clientes X daquele usuário).

    
por 19.04.2013 / 03:06
6

Um passo adiante @Jordan, Aqui está a solução elegante contra sudo nice -n -xx su <username> -c matlab hack

Note: Using username=sid, matlab meta-data dir=/var/lib/matlab, nice=-10 change at your will

  1. Crie o diretório de meta-dados do matlab (PERPARE)

    sudo mkdir /var/lib/matlab

  2. Adicione um usuário especificado para iniciar o matlab & persimisson direita

    sudo useradd -d /var/lib/matlab sid
    sudo chown sid:sid /var/lib/matlab
  1. Definir senha do usuário (sid)

    sudo passwd sid

  2. Anexar depois ao /etc/security/limits.conf

    sid - priority -10

  3. Configurar & Copie o ssh-key para automatizar o login (OPCIONAL)

    ssh-keygen -t rsa #following key passwd misc   
    ssh-copy-id sid@localhost #using sid's passwd
  1. Crie um wrapper de shell matlab (corrija ERR de falha silenciosa )
    sudo -i
    cat >/usr/local/bin/wmatlab
    #!/bin/bash --
    # A wrapper to launch matlab
    /usr/local/MATLAB/<version>/bin/matlab -desktop
    EOF
    chmod +x /usr/local/bin/wmatlab
  1. Conector de login do ajuste sid

    sudo usermod -s /usr/local/bin/wmatlab sid

  2. inicie o matlab usando ssh com Xforward

    ssh -X sid@localhost

por 05.05.2015 / 14:06
2

Como @jordanm disse drop sudo. Você pode melhorar seus próprios processos para dar a eles uma prioridade menor:

nice -20 matlab

Não há sudo .

    
por 18.04.2013 / 21:49
2

Eu descobri que isso poderia ser feito modificando o arquivo /etc/security/limits.conf (pelo menos em algumas distribuições linux). No meu caso, simplesmente adicionei

#<domain> <type> <item> <value> my_user - nice -20

então você pode executar

nice -n -20 matlab

    
por 11.04.2017 / 16:20
1

pam permite que você defina limites em arquivos de configuração nice por grupo:

@grnice hard priority -20

@grnice hard nice -20

E certifique-se de que o grupo o processo seja executado em grnice.

    
por 28.11.2013 / 19:22
1

Adicione o usuário a sudoers (na verdade, um novo arquivo em /etc/sudoers.d, mas é a mesma premissa):

niceuser ALL=NOPASSWD:/usr/bin/nice

Então, como o "niceuser":

niceuser@localhost $ sudo nice -n -10 command...

e faz o que eu preciso (ou seja, meu usuário agora pode aumentar a prioridade de {command ...}). Ele suporta múltiplos usuários, etc. - use man 5 sudoers para detalhes.

    
por 24.09.2015 / 11:43
1

Outra opção possível (simples, mas menos segura) é ativar a permissão setuid / setgid para nice executável.

sudo chmod +s /usr/bin/nice

setuid designa qualquer usuário que possa executar o arquivo o UID efetivo do proprietário do arquivo (neste caso, root ) ao executar o arquivo, sendo assim equivalente a ser executado como aquele usuário. setguid faz o mesmo para um GID efetivo.

Ou você pode fazer isso com mais segurança:

# create a system group named 'nice'
groupadd -r nice

# set the owner group for 'nice' executable
chgrp nice /usr/bin/nice

# disallow other users to run 'nice'
chmod o-x /usr/bin/nice

# allow anyone who are able to execute the file gain a setuid as root
chmod u+s /usr/bin/nice

# add your user to the group
usermod -a -G nice <your-user-name>

Cuidado, você precisa fazer o login novamente na sua conta para que o novo grupo entre em vigor.

    
por 15.12.2017 / 05:07