この方法でパスワードを保存しても安全ですか?
echo 'Write sudo password (will not be displayed) and hit enter'
read -s password
次のようなコマンドを作成するために必要です。
echo $password | sudo -S apt-get install -y foo bar
いいえ、で見ることができます/proc/$PID/cmdline
。
セキュリティツールを再発明しようとしないことをお勧めします。プログラムはsudo
パスワードをキャッシュできます。
より良いアプローチは、sudoers ファイルを編集し、パスワードを必要としないプログラムを追加することです...
sudo visudo
管理者グループがパスワードなしで apt-get を実行できるようにするには、以下を実行して追加します
。%admin ALL = NOPASSWD: /usr/bin/apt-get
詳細については、sudoers の man ページを参照してください。
echo $password | sudo -S apt-get install -y foo bar
これは少し危険です。ユーザーがすでにsudoに対して認証されている場合、sudoはパスワードを再度要求せず、apt-getに転送されます。これにより、奇妙な結果が生じる可能性があります(たとえば、postinstallスクリプトが質問をした場合)。使用することをお勧めします
sudo -k # remove previous sudo timestamp
echo $password | sudo -v -S # create a new one for 15 minutes
sudo apt-get ... # execute the command
代わりは。
編集:Dirkは、実行中にパスワードが非常に短時間表示されることについて正しいですecho
。私の回答は、あなたの質問に対する回答ではなく、拡張コメントとしてご覧ください。
sudo
はオープン ソースであるため、パスワードをコマンド ライン パラメータとして受け取る独自のバージョンをコンパイルできます。