Como inicio um processo com um bom valor de -20 e não concedo privilégios de root?

Como inicio um processo com um bom valor de -20 e não concedo privilégios de root?

Gostaria de iniciar um processo com um bom valor de -20. Isso exige 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-root?

Minha abordagem atual é

sudo nice -n -20 sudo -u myusername matlab

o que para mim parece um hack. Existe uma abordagem direta para fazer isso?

Responder1

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

Porém consegui fazer um hack rápido junto com "su" que funciona:

sudo nice -n -20 su -c command_to_run user_to_run_as

Se você não precisa fornecer uma senha ao sudo - talvez porque você já a tenha fornecido - você pode adicionar um &para colocar tudo em segundo plano.

Como você já se tornou root com o comando sudo, sunão será solicitada uma senha. Consegui iniciar um programa X a partir de um emulador de terminal em X. Se você deseja executar o programa X como outro usuário que não seja o usuário proprietário da sessão X, provavelmente precisará informar explicitamente ao X para permitir isso (aberto para clientes X desse usuário).

Responder2

Descobri que isso poderia ser feito modificando o arquivo /etc/security/limits.conf(pelo menos em algumas distros Linux). No meu caso, simplesmente adicionei:

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

então você pode executar

nice -n -20 matlab

Saia e entre novamente depois de salvar as alterações em /etc/security/limits.conf.

Esseresponderexplica o porquê.

Responder3

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

Nota: Usando username= sid, matlab meta-data dir= /var/lib/matlab, nice= -10-- mude à sua vontade

  1. Criar diretório de metadados matlab
    sudo mkdir /var/lib/matlab
    
  2. Adicione o usuário especificado para iniciar o matlab e permissão correta
    sudo useradd -d /var/lib/matlab sid
    sudo chown sid:sid /var/lib/matlab
    
  3. Definir senha do usuário
    sudo passwd sid
    
  4. Anexe o seguinte a/etc/security/limits.conf
    sid - priority -10
    
  5. Configure e copie a chave ssh para automatizar o login (opcional)
    ssh-keygen -t rsa #following key passwd misc   
    ssh-copy-id sid@localhost #using sid's passwd
    
  6. Criar wrapper de shell matlab (corrigirerro de falha silenciosa)
    sudo -i
    cat &lt;&lt;EOF &gt;&gt;/usr/local/bin/wmatlab
    #!/bin/bash --
    # A wrapper to launch matlab
    /usr/local/MATLAB/&lt;version&gt;/bin/matlab -desktop
    EOF
    chmod +x /usr/local/bin/wmatlab
    
  7. Ajuste o shell de login do “sid”
    sudo usermod -s /usr/local/bin/wmatlab sid
    
  8. Inicie o matlab usando sshcomXforward
    ssh -X sid@localhost
    

Responder4

Como @jordanm disse, solte o sudo. Você pode aprimorar seus próprios processos para dar-lhes uma prioridade mais baixa:

nice -20 matlab

Não sudo.

informação relacionada