dmenuでパスワードを隠す

dmenuでパスワードを隠す

私は初めてdmenuを使います。sudodmenu権限を必要とするプログラムを実行しようとしています。私はフォローしましたこのリンク。だから私のフォルダには次の./dpassスクリプトがあります。bin

#!/bin/bash
dmenu -p "$1" <&- && echo

私も次のコマンドを実行しました。

$ export SUDO_ASKPASS=/home/username/bin/dpass

binこれで、次のフォルダがありますshutdown

#!/bin/bash
sudo -A shutdown -h now

dmenuで実行しようとするとパスワードを尋ねられますが、問題はパスワードを入力してもパスワードが隠されないことです。誰でも私のパスワードを見ることができるので、これは本当に安全ではないと思います。 dmenuでパスワードを隠す方法はありますか?

答え1

&& echo通話が終わったら削除してみてくださいdmenu

#!/bin/bash
dmenu -p "$1" <&-

これにより、ユーザー入力エコーが無効になりますdmenu。この方法は、次のタイトルのブログ投稿で説明されています。dメニューでパスワードを入力してください

抜粋
$ cat dpass
#! /bin/sh

# shellcheck disable=2046
caller="$(ps -o comm= -p $(ps -o ppid= -p $$))"
prompt="${1:-[$caller]}"
promptfg=black promptbg=red hidden=white
font="Liberation Sans-20:Bold"

dmenu -p "$prompt" -fn "$font" \
  -nf "$hidden" -nb "$hidden" -sf "$promptfg" -sb "$promptbg" <&-
  1. パラメータが渡されない場合は、呼び出し側アプリケーションにプロンプ​​ト(赤い部分)が設定されます。したがって、ユーザーは常に一種のプロンプトを受け取ります。
  2. && echo他のパスワードハンドラと連携するように末尾のステートメントを削除します。

答え2

からインスピレーションを受けるサーキットブレーカーチーム、私はstpromptというスクリプトを書いた。

#!/bin/bash

prompt="$1"
answer=$(st -o "-" -g 100x5 -c st-prompt sh -c "echo -n '$prompt: '; read -s ANSWER; echo \$ANSWER")
echo "${answer#*: }" | tr -d '\r'

スクリプトはユーザーにメッセージを表示し、入力を非表示にして応答を出力します。

特定のケースでは、このスクリプトを次のように使用できます。

sudopgm==$(echo "${options[@]}" | dmenu -i -p 'Programs that need sudo: ')
SUDO_ASKPASS=$(stprompt "sudo pass") sudo -A $sudopgm

ここに画像の説明を入力してください。 ここに画像の説明を入力してください。

stprompt私のアプリケーションでそれを使用する方法の詳細ドットファイルを読む、そして私の例の使い方dmenu_ibmicmdスクリプト。

Fuseteamが言ったように、stはターミナルです。お好みの端末に交換可能です。

答え3

解決策は、dterm次のスクリプトを実行することです。

#!/bin/bash
command="$@";st -- $command

これにより、端末を起動するとパスワードの入力を求めるdterm sudo commandポップアップが表示されます。

追加ボーナスとして、dmenuを介してターミナルアプリケーションを実行することもできます。

ps stは端末であり、-eまたは--引数を受け入れる端末に置き換えることができます。

ppsはdmenuを介してスクリプトを実行できると仮定します。

関連情報