すてきなsudoまたはsudo nice?


53

次のコマンドでsudoを介して集中タスクを実行するのに違いはありますか?:

  1. nice sudo [ここに集中的なコマンド]
  2. sudo nice [集中的なコマンドはこちら]

ところで、これはLinux 3.x用です。


6
あなたが見るテストを支援するためnice bash -c 'ps -p $$ -o pid,ni,comm'、およびsudo nice bash -c 'ps -p $$ -o pid,ni,comm'、とnice sudo bash -c 'ps -p $$ -o pid,ni,comm'。3つすべてが、生成されたシェルのプロセスID($$)のnice値を表示するはずです。
ゾレダチェ14

@Zoredache、あなたのコメントは非常に建設的だと思いますが、フォークするときに継承されるので、質問に対する実際の答えであるため、それらはすべて同じ素晴らしい値を持つと言う必要があります。
フローリンアサヴォアエ14

3
@FlorinAsavoaieそれが答えだと思うなら、気軽に追加してください。物事をテストする方法として上記のコメントを追加しました。個人的に何が起こるか自信がないので、さまざまな呼び出しで素晴らしい値を表示できるコマンドを見つけることにしました。私はキャンプにいますが、実際には、物事が想定通りに機能していることを示すテストを行うことを好む傾向があります。
ゾレダチェ14

@FlorinAsavoaie私もそう思ったが、見ているだろうserverfault.com/a/626576/117546
エモリー14

回答:


104

重要な違いがあります。

プロセスの優先度を下げたい場合、順序は関係ありません。一方、それを増やしたい場合は、sudo前に置く必要がありますnice

通常のユーザーとしてコマンドを実行しているため(そうでない場合は、sudoをまったく使用しません)、コマンドの優先順位のみを下げることができます。ただし、sudo最初に使用する場合は、必要に応じて増やすことができます。


21
おめでとうございます、あなたは勝ちます。
マイケルハンプトン

2
これは非常に重要なポイントですが、答えとしては、ベースケースで順序が重要でない理由を説明する場合にのみ完了します(マイケルが彼の答えで行うように)。
モニカと軽さのレース14

16

実行するnice sudoと、パスワードのプロンプトも改善されますが、それを入力するのにはるかに多くの時間を費やすので、それは本当に重要ではありません。

ThoriumBRが述べたように、優先度を下げる場合、順序は関係ありませんが、優先度を上げたい場合は(これはルートとして実行する必要があるため)を使用する必要がありますsudo nice

そうでなければ、本当の違いは想像できません。


2

「最小限の特権の原則」を使用すると、必要な場合にのみroot特権でプログラムを実行し、不要になったらすぐに再度ドロップする必要があります。

そのため、はい、違いがあります。もしniceに対するエクスプロイトがあれば、攻撃者はniceプログラムと同じ特権でコードを実行できます。

また、sudoは環境をリセットするため、副作用が発生する可能性があります。

$ 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

したがって、sudoを介して実行する「素敵な」コマンドは、実際には異なるバイナリになる可能性があります。

$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens: 
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)

2

遅い答え:

sudoアクセスが特定のプログラムに限定されている場合(fooおよびbarなど)、実行する権限はありませんが、実行sudo nice fooは許可されますnice sudo foo

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.