ラッパーでsudoを使用する「標準」方法はありますか?

ラッパーでsudoを使用する「標準」方法はありますか?

たとえば、myの出力を取得するにはをdmesg使用する必要がありますsudo dmesg

それでは、出力を監視したいとしましょう。watchまたはを使用してwatch -n 1 sudo dmesg入力できますsudo watch -n 1 dmesg。彼らはすべて同じものを出力します。

私の質問は次のとおりです

  1. sudo別の順序で使用すると、他の結果が出る例はありますか?

  2. このような状況に対する「標準」または公式の表記法はありますか?ラッパー全体の前にラップする必要がありますか、それとも高い権限を必要とするコマンド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"

関連情報