Опція sudo -A
(SUDO_ASKPASS), очевидно, спричиняє sudo для втрати налаштування тайм-ауту (наприклад, timetamp_timeout).
Я хочу використовувати параметр sudo -A, але я хочу зберегти затримку за замовчуванням (наприклад, 15 хвилин на Ubuntu) у скрипті bash. Я хочу запитати пароль користувача у діалоговому вікні графічного інтерфейсу, але я хочу лише один раз підказати про свій сценарій (не 50+ разів).
Крім того, я не хочу запускати весь свій скрипт як користувач root, тому що я просто думаю, що це погана ідея. Крім того, файли, створені за моїм сценарієм, мають неправильне право власності в цьому випадку.
Параметр sudo -A працював би для мене, якби він зберігав тайм-аут за замовчуванням.
З посібника з судо
Варіант: ‑A
Зазвичай, якщо sudo вимагає пароль, він прочитає його з терміналу користувача. Якщо вказана опція ‑A (askpass), виконується (можливо графічна) помічна програма для зчитування пароля користувача та виведення пароля на стандартний вихід. Якщо встановлена змінна середовища SUDO_ASKPASS, вона вказує шлях до допоміжної програми. В іншому випадку, якщо /etc/sudo.conf містить рядок із зазначенням програми запиту, це значення буде використано. Наприклад:
# Path to askpass helper program
Path askpass /usr/X11R6/bin/ssh-askpass
BTW, kdesudo має цю ж проблему - він вимагає пароля щоразу, коли він викликається, навіть якщо лише через секунду в тому ж сценарії.
Я використовую 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