bom sudo ou bom sudo?

53

existe alguma diferença entre executar uma tarefa intensiva sobre o sudo com os seguintes comandos ?:

  1. nice sudo [comando intensivo aqui]
  2. sudo nice [comando intensivo aqui]

BTW, isto é para Linux 3.x.

Nicolas Laplante
fonte
6
Para ajudá-lo a testar nice bash -c 'ps -p $$ -o pid,ni,comm', veja , e sudo nice bash -c 'ps -p $$ -o pid,ni,comm', e nice 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.
Zoredache
@ Zoredache, embora eu ache que o seu comentário é MUITO construtivo, devemos dizer que todos terão o mesmo valor agradável, porque ele é herdado durante a bifurcação, o que deve ser a resposta real à pergunta.
Florin Asăvoaie
3
@FlorinAsavoaie, se você acha que deve ser a resposta, sinta-se à vontade para adicioná-lo. Eu adicionei meu comentário acima como uma maneira de testar as coisas, porque eu pessoalmente não estava 100% confiante sobre o que aconteceria, e decidi encontrar um comando que pudesse mostrar o valor agradável com várias invocações. Estou no campo que tende a preferir fazer um teste que mostra que as coisas estão funcionando da maneira que deveriam.
Zoredache
@FlorinAsavoaie Eu também pensaria assim, mas veja serverfault.com/a/626576/117546 .
Emory

Respostas:

104

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 sudoantes 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 sudoprimeiro, poderá aumentá-lo, se quiser.

ThoriumBR
fonte
21
Parabéns, você venceu.
Michael Hampton
2
Este é um ponto muito importante, embora, como resposta, só esteja completo quando você explicar por que o pedido não importa no caso base (como Michael faz em sua resposta).
Lightness Races com Monica
16

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.

Michael Hampton
fonte
2

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)
Jens Timmerman
fonte
2

Resposta atrasada:

Se o seu acesso ao sudo estiver limitado a determinados programas ( fooe bar, por exemplo), você não terá autoridade para executar sudo nice foo, mas poderá executar nice sudo foo.

Chris Dennis
fonte