현재 여러 스크립트에서 sudo를 많이 사용하고 있는데 일부 스크립트가 대화형 입력(예: Makefile)을 허용하지 않기 때문에 약간 번거로워지고 있습니다.
sudo 비밀번호를 완전히 비활성화하는 대신 gnome-keyring이나 유사한 키링 소프트웨어를 사용하여 비밀번호를 기억할 수 있다면 좋을 것 같습니다. 이것이 좋은 생각입니까? 가능합니까? 더 나은 해결책이 있습니까?
답변1
프로그램 -A
옵션과 결합하면 귀하가 요구하는 것이 실현 가능한 것으로 들립니다.sudo
gnome-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.
진행하는 방법은 다음과 같습니다(방금 시도했는데 효과가 있었습니다).
- gnome-keyring-query 설치(배포판에서 패키지하지 않은 경우 컴파일해야 함)-> 업스트림 URL)
- gnome-keyring에 sudo 비밀번호를 저장하세요.
- 다음을 통해 키링에서 비밀번호를 검색할 수 있습니다.
gnome-keyring-query get sudo
- 이 명령을 스크립트(예: /usr/bin/sudo_askpass)로 저장하고 chmod를 사용하여 실행할 수 있는지 확인하세요.
export SUDO_ASKPASS=/usr/bin/sudo_askpass
- 대신 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)