sudo -A
(SUDO_ASKPASS) 옵션은 분명히 원인은 제한 시간 (예를 들어, timestamp_timeout) 설정을 잃고 SUDO.
sudo -A 옵션을 사용하고 싶지만 bash 스크립트에서 기본 시간 초과 (예 : Ubuntu에서 15 분)를 유지하고 싶습니다. GUI 대화 상자에서 사용자의 암호를 안전하게 요청하고 싶지만 스크립트를 한 번만 요청하고 싶습니다 (50 회 이상).
또한 나는 그것이 나쁜 생각이라고 생각하기 때문에 전체 스크립트를 루트 사용자로 실행하고 싶지 않습니다. 또한 내 스크립트로 만든 파일의 소유권이 잘못되었습니다.
sudo -A 옵션은 기본 시간 초과를 유지하면 작동합니다.
sudo 매뉴얼에서 :
옵션 : ‑A
일반적으로 sudo에 암호가 필요한 경우 사용자 터미널에서 암호를 읽습니다. -A (askpass) 옵션이 지정되면 사용자 암호를 읽고 표준 출력으로 암호를 출력하기 위해 (아마도 그래픽 인) 도우미 프로그램이 실행됩니다. SUDO_ASKPASS 환경 변수가 설정되면 도우미 프로그램의 경로를 지정합니다. 그렇지 않으면 /etc/sudo.conf에 askpass 프로그램을 지정하는 행이 포함되어 있으면 해당 값이 사용됩니다. 예를 들면 다음과 같습니다.
# Path to askpass helper program
Path askpass /usr/X11R6/bin/ssh-askpass
BTW, kdesudo는 동일한 문제를 가지고 있습니다. 같은 스크립트에서 1 초 후에도 암호가 호출 될 때마다 암호가 필요합니다.
Kubuntu 12.04 64 비트를 사용하고 있습니다.
다음은 솔루션의 모든 부분에 대한 전체 작업 예입니다. bash 스크립트, 여기 에 제안 된 "myaskpass"스크립트 및 ".desktop"파일로 구성됩니다. 모든 것은 100 % GUI (터미널 상호 작용이 전혀 없음) 여야하므로 .desktop 파일은 필수적입니다 (afaik).
$ cat myaskpass.sh
#!/bin/bash
kdialog --password "Please enter your password: "
exit 0
$ cat askpasstest1.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Comment=SUDO_ASKPASS tester1
Exec=bash /home/user/test/askpasstest1.sh
GenericName=SUDO_ASKPASS tester1
Name=SUDO_ASKPASS tester1
NoDisplay=false
Path[$e]=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
Categories=Application;Utility;
X-KDE-SubstituteUID=false
X-KDE-Username=
그리고 테스트 스크립트 자체. 이 솔루션을 사용할 때 암호를 두 번 묻습니다.
#!/bin/bash
sudo -k
SUDO_ASKPASS="/home/user/test/myaskpass.sh" sudo -A touch filemadeas_askpass1
touch filemadeas_regularuser1
SUDO_ASKPASS="/home/user/test/myaskpass.sh" sudo -A touch filemadeas_askpass2
touch filemadeas_regularuser2
ls -la filemadeas* > /home/user/test/fma.log
kdialog --title "Files Created" --textbox /home/user/test/fma.log 640 480
sudo rm filemadeas_*
rm fma.log
exit 0
kdesudo
위에서 설명한 것과 동일한 문제가 발생합니다. 나는 sudo -A
대안 으로 테스트 하고 있었고 kdesudo
내 상황에 더 좋지만 시간 초과 문제를 해결하지는 못합니다 (적어도 지금까지).
gksudo
되지는 여기에 옵션? linux.die.net/man/1/gksudo