existe alguma diferença entre executar uma tarefa intensiva sobre o sudo com os seguintes comandos ?:
- nice sudo [comando intensivo aqui]
- sudo nice [comando intensivo aqui]
BTW, isto é para Linux 3.x.
existe alguma diferença entre executar uma tarefa intensiva sobre o sudo com os seguintes comandos ?:
BTW, isto é para Linux 3.x.
Respostas:
Há uma diferença, crucial.
Se você deseja diminuir a prioridade do processo, o pedido não importa. Por outro lado, se você quiser aumentá- lo, você deve colocar sudo
antes nice
.
Como você está executando o comando como um usuário normal (caso contrário, você não se incomodaria com o sudo), você só pode diminuir a prioridade do seu comando. Mas se você usar sudo
primeiro, poderá aumentá-lo, se quiser.
Se você executar nice sudo
, o prompt da sua senha também será necessário, mas como você passará muito mais tempo digitando-a, isso realmente não importa muito.
Como o ThoriumBR observou, se você está diminuindo a prioridade, a ordem é irrelevante, mas se você deseja aumentar a prioridade, deve usar (já que isso deve ser feito como raiz) sudo nice
.
Caso contrário, não consigo imaginar nenhuma diferença real.
Usando o 'princípio do menor privilégio', você só deve executar um programa com privilégios de root se precisar deles e soltá-los novamente assim que não precisar mais deles.
Portanto, sim, há uma diferença: se houver uma exploração por bom, um invasor poderá executar código com os mesmos privilégios que o bom programa.
Além disso, o sudo redefine seu ambiente, para que possa ter efeitos colaterais, tente
$ echo 'echo $PATH' | sh
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/jens/.local/bin:/home/jens/bin:/home/jens/.local/bin
$ echo 'echo $PATH' | sudo sh
[sudo] password for jens:
/sbin:/bin:/usr/sbin:/usr/bin
Portanto, o comando 'nice' executado através do sudo pode acabar sendo um binário diferente.
$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens:
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)
Resposta atrasada:
Se o seu acesso ao sudo estiver limitado a determinados programas ( foo
e bar
, por exemplo), você não terá autoridade para executar sudo nice foo
, mas poderá executar nice sudo foo
.
nice bash -c 'ps -p $$ -o pid,ni,comm'
, veja , esudo nice bash -c 'ps -p $$ -o pid,ni,comm'
, enice sudo bash -c 'ps -p $$ -o pid,ni,comm'
. Todos os três devem mostrar o bom valor para a identificação do processo ($$) do shell gerado.