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를 통해 스크립트를 실행할 수 있다고 가정합니다.

관련 정보