sudo가 gnome-keyring 또는 이와 유사한 것에서 비밀번호를 읽을 수 있습니까?

sudo가 gnome-keyring 또는 이와 유사한 것에서 비밀번호를 읽을 수 있습니까?

현재 여러 스크립트에서 sudo를 많이 사용하고 있는데 일부 스크립트가 대화형 입력(예: Makefile)을 허용하지 않기 때문에 약간 번거로워지고 있습니다.

sudo 비밀번호를 완전히 비활성화하는 대신 gnome-keyring이나 유사한 키링 소프트웨어를 사용하여 비밀번호를 기억할 수 있다면 좋을 것 같습니다. 이것이 좋은 생각입니까? 가능합니까? 더 나은 해결책이 있습니까?

답변1

프로그램 -A옵션과 결합하면 귀하가 요구하는 것이 실현 가능한 것으로 들립니다.sudognome-keyring-query

기본적으로 이 옵션을 사용하면 -A표준 입력에서 비밀번호를 읽는 것이 아니라 환경 변수를 sudo사용하여 지정할 수 있는 외부 프로그램에서 비밀번호를 읽습니다.SUDO_ASKPASS

외부 프로그램은 gnome-keyring-query비밀번호 저장/검색을 위한 명령줄 도구 일 수 있습니다 gnome-keyring. 도움을 주는 방법은 다음과 같습니다 gnome-keyring-query.

Usage:
    gnome-keyring-query <mode> <name>
Parameters:
    mode     - either 'get' or 'set' (without quotes)
    name     - a name to identify the key
Notes:
    If mode is 'get', then the password is dumped to stdout.
    If mode is 'set', then the password is read from stdin.

진행하는 방법은 다음과 같습니다(방금 시도했는데 효과가 있었습니다).

  1. gnome-keyring-query 설치(배포판에서 패키지하지 않은 경우 컴파일해야 함)-> 업스트림 URL)
  2. gnome-keyring에 sudo 비밀번호를 저장하세요.
  3. 다음을 통해 키링에서 비밀번호를 검색할 수 있습니다.gnome-keyring-query get sudo
  4. 이 명령을 스크립트(예: /usr/bin/sudo_askpass)로 저장하고 chmod를 사용하여 실행할 수 있는지 확인하세요.
  5. export SUDO_ASKPASS=/usr/bin/sudo_askpass
  6. 대신 sudo를 사용하세요 sudo -A.

즉, 비밀번호를 키링에 저장하고 이 키링을 열어두면 누구나 이 gnome-keyring-query 도구를 사용하거나 해마를 시작하여 매우 쉽게 sudo 비밀번호를 읽을 수 있습니다. 그러니 매우 조심하세요.

답변2

sudo는 시간 초과 옵션을 제공합니다.

/etc/sudoers:

Defaults:username timestamp_timeout=time_in_minutes

루트 권한을 유지하려면 루트로 스크립트를 시작하면 됩니다. 동의합니다. 최적은 아니지만실제로당신은 이미 무엇을하고 있습니까?

대신, 루트 권한 없이 수행할 수 있는 모든 작업과 루트 권한이 필요한 작업을 그룹화하여 서로 다른 두 시간에 실행하는 것이 좋습니다. 일반적으로 다음과 같이 수행됩니다.

./configure
make
sudo make install

그런데 Xorg 시스템을 사용하는 경우 sudo 대신 gksudo를 사용할 수 있습니다. 그러나 다시 말하지만, 스크립트에 "sudo"를 숨기는 것은 좋은 습관이 아닙니다.

답변3

나는 사용하고있다통과내 sudo 명령에 대한 비밀번호를 제공하세요. 동일한 작업을 수행하려는 경우:

다음 스크립트를 다음과 같이 저장합니다.~/.local/bin/sudo-askpass

#!/bin/bash
pass show hosts/$(whoami)@$(hostname) | head -n1

쉘 rc 파일의 sudo별칭sudo --askpass

# bashrc or zshrc
export SUDO_ASKPASS=sudo-askpass
alias sudo='sudo --askpass'

비밀번호 저장pass edit hosts/$(whoami)@$(hostname)

관련 정보