2011-12-03 9 views
1

アプリケーションをインストールするときに必要なコンポーネントを検索してインストールするsetup.shスクリプトを記述しようとしました。必要なコンポーネントが見つからない場合、コンポーネントのインストールを促すメッセージが表示されます。私はそのためのsudo apt-get installを使用している、と私はこのように、sudoのにユーザー入力したパスワードを渡したい:ここでドキュメントがsudo suと動作しない

read passwd 
sudo apt-get install clisp <<EOF 
$passwd 
$passwd 
EOF 

しかし、これは動作しません。入力されたパスワードがsudoに渡されていません。なぜこれは起こっていないのですか?私の使い方に間違いはありますか?

+0

なぜ2つの '$ passwd'式がありますか? 'sudo'のためのものです。しかし、第二のもの? –

+0

'/ etc/sudoers'を更新して、パスワードなしでそのコマンドを実行できるようにしてください(' NOPASSWD'、私は思う)。パスワードをプレーンテキストのファイルに保存するよりも安全です。 –

答えて

4

パスワードは標準入力から読み取られるのではなく、「現在の端末」から読み取られます。これはリダイレクトによって変更できません。しかしsudoは、端末からではなく標準入力からパスワードを読み取るオプション-Sを提供します。

を編集してください:パスワード全体を一切傍受しないようにすることが、問題全体を解決する良い方法です。パスワードが必要な場合はsudoがパスワードを要求します。 -Aオプションを使用すると、この質問のグラフィカルなUIを提供することもできます。 sudoはその入力のタイムスタンプを保持しているので、15分後にパスワードを要求しません(デフォルトでは設定可能です)。したがって、複数のsudoコールも問題ではありません。

関連する問題