たとえば、myの出力を取得するにはをdmesg
使用する必要がありますsudo dmesg
。
それでは、出力を監視したいとしましょう。watch
またはを使用してwatch -n 1 sudo dmesg
入力できますsudo watch -n 1 dmesg
。彼らはすべて同じものを出力します。
私の質問は次のとおりです
sudo
別の順序で使用すると、他の結果が出る例はありますか?このような状況に対する「標準」または公式の表記法はありますか?ラッパー全体の前にラップする必要がありますか、それとも高い権限を必要とするコマンド
sudo
に入れる必要がありますか?sudo
答え1
パイプではなくラッパーを使用しています。ラッパーはその権限を渡します。
この場合、純粋にセキュリティ上の理由から、以下を使用してください。
sudo watch dmesg
変える
watch sudo dmesg
これにより、sudo
認証を一度だけ実行できます。それ以外の場合は、sudo
毎秒1回認証を継続的に更新します。あなたが席を離れたときに誰かが現れてあなたのコマンドを受け取ったら、そのコマンドをEnterキーを押してからどれくらい経過したかにかかわらず、すぐに他のタスクを^C
実行できます。sudo
通常、特権の昇格が必要なすべてのコマンドには、次のものが必要ですsudo
。
sudo command1 | sudo command2
ラッパーの場合、プロセスを昇格すると、そのプロセスによって生成されたすべての新しいプロセスが昇格されます。唯一の例外は、root以外のユーザーとして自動的に実行されることです。たとえば、独自のユーザーとして実行されるサービスです。
複数のコマンドが互いにパイプで接続されており、すべて特権の昇格が必要な場合は、コマンドが昇格されたbashサブシェルにラップされているのが一般的です。
sudo bash -c "command1 | command2"