ここで「sudo -v &&」と「sh /dev/stdin」の目的は何ですか?

ここで「sudo -v &&」と「sh /dev/stdin」の目的は何ですか?

~からhttps://calibre-ebook.com/download_linux

sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin

sudo -v &&上記のことを考えると、man sudoここでの目的は何ですか?

 -v, --validate

ユーザーのキャッシュされた資格情報を更新し、必要に応じてユーザーを認証します。 sudoersプラグインの場合、デフォルトではsudoタイムアウトは15分以上延長されますが、コマンドは実行されません。すべてのセキュリティポリシーがキャッシュされた資格情報をサポートしているわけではありません。

目的は何ですかsh /dev/stdin? (Ubuntu 18.04ではshダッシュです)

ありがとうございます。

ベストアンサー1

ここで目的は何ですかsudo -v &&

私はこれがユーザーの驚きを最小限に抑えると信じています。 2つの状況を考えてみましょう。

  1. Sudoはいいえコマンドにパスワードを要求するように構成します(NOPASSWDタグ)。

比較的:

  1. Sudoはいパスワードを要求するコマンドの設定

最初のケースでは、sudoへの両方の呼び出しはプロンプトなしで成功します。問題が解決しました!

2番目のケースでは、2つの可能性があります。ユーザーが最近 sudo 認証を受けているか、まだ認証されていません。

  • 最近認証した場合は、sudo -vキャッシュされた資格情報のタイムスタンプを更新するだけです。
  • ユーザーいいえ最近 sudo で認証されると、パスワードの入力を求められ、認証情報がキャッシュされます。

sudo -vプロセスが成功したら、sudo sh /dev/stdinキャッシュされた資格情報を使用して中断することなく2番目の呼び出しを実行する必要があります。

sudo -v初期コマンドなしで選択肢を検討してください(ここで、sudoはまだパスワードの入力を求めるように設定されています)。この場合、wget出力がstdoutまたはstderrに記録されている可能性があり、これはユーザーが出力を見ず、何が起こらなかったのか疑問に思うかもしれません。

目的は何ですかsh /dev/stdin

これは標準入力へのリンクである特別なファイルであるため、1つの引数shで呼び出されます。command_file

名前ダッシュ - コマンドソルバー(シェル)

要約

 dash ...
      [command_file [argument ...]]

その結果、shはcommand_fileを読み込み、その中のコマンドを期待して実行します。この特別な標準入力「ファイル」は出力にパイプされるため、wget最終結果はURLの内容をルートレベルのシェルに送信することです。

Calibreプロジェクトが特にこの構文を選択した理由がわかりません。選択肢は次のとおりです。

  • ... | sudo sh
  • ... | sudo sh -

おすすめ記事