「sudo-S」を明示的に使用する目的は何ですか?

「sudo-S」を明示的に使用する目的は何ですか?

sudoのマンページから:

-S, --stdin

標準エラーにプロンプ​​トを作成し、端末デバイスを使用する代わりに、標準入力からパスワードを読みます。パスワードの後に​​は改行文字が続きます。

sudo -Sjustの代わりに使用する目的は何ですかsudo

  • sudo基本的に、標準入力からパスワードを読むのは正しいですか?

  • 「標準エラーにプロンプ​​トを書き込む」の目的は何ですか?デフォルトではsudo標準出力に書き込まれますか?

  • すべてパスワードの後に​​改行文字が続くべきですか?

例えば、https://stackoverflow.com/a/39553081/156458sudo -S trueパスワードはまだ必要です。では、その投稿の元の問題をどのように解決しますか?解決策を探してこのリンクを見つけました。シェルプロファイルでsudoを必要とするスクリプトを実行する必要がありますか?

ありがとうございます。


修正する:

J.Taylorの答えは次のとおりです。

sudoデフォルトでは、パスワードは標準入力から読み取られず、ターミナルインターフェイスから読み取られます。

実装の観点からどのように理解するかを知りたいです。

プログラムが標準入力から読み取るときに常にバインドされるファイル記述子0から読み取られます。これは正しいですか?

なしで使用するときにsudo標準入力を使用するのかターミナルを使用するのかわからないのはなぜですか?sudo-S

プログラム(例えばsudo -S)は、標準入力の代わりに端末で読み取りをどのように実装できますか?

答え1

sudoするいいえパスワードを読む標準入力デフォルトでは - 次から始めます。端末インターフェース。を使用すると、sudo -S次のように他のコマンド/ファイルからパスワードを入力できます。printf "yourpassword\n" | sudo -S nano /etc/apt/sources.list

これは、パスワードを要求せずにsudoにログインするためにシェルスクリプトで使用できますが、シェルから直接これを実行しないように注意する必要があります。これにより、sudoパスワードがシェル履歴に残ります。

関連情報