Intereting Posts
Есть ли хорошо известные и хорошо используемые среды сценариев IDE для Un * x? Akonadi наводняет мои ошибки .xsession Преобразование FLAC с изображениями в OGG с помощью ffmpeg / libvorbis создает поврежденные файлы Изменить системный язык Solaris 8 Копировать с удаленного сервера, который не имеет rsync Конфигурация myhostname с многопоточным именем postfix Получить страницу в curl как текст Создание приложения bash для OpenWrt как добавить свойство udev для моего телефона Android? Как отключить системный звуковой сигнал для непривилегированного пользователя Перенаправление PuTTY X11 не может пересылать Google Chrome Поиск имени пользователя в файле и вывод номера телефона пользователя Обычная доступная файловая система с очень большим ограничением по размеру файла? Информация о сетевом интерфейсе в AIX Как скопировать структуру папок и сделать символические ссылки на файлы?

Графически попросите пароль в сценарии bash и сохраните настройку тайм-аута sudo по умолчанию

Параметр sudo -A (SUDO_ASKPASS), по-видимому, заставляет sudo потерять тайм-аут (например, timestamp_timeout).

Я хочу использовать параметр sudo -A, но я хочу сохранить таймаут по умолчанию (например, 15 минут на Ubuntu) в сценарии bash. Я хочу запросить пароль пользователя безопасно и в диалоговом окне GUI, но я хочу только один раз запросить мой сценарий (не 50 раз).

Кроме того, я не хочу запускать весь свой скрипт в качестве пользователя root, потому что я просто думаю, что это плохая идея. Кроме того, файлы, созданные моим скриптом, имеют неправильное право собственности в этом случае.

Параметр sudo -A будет работать для меня, если он сохранит таймаут по умолчанию.

Из руководства sudo:

Вариант: -А

Обычно, если sudo требует пароль, он будет считывать его с терминала пользователя. Если указан параметр -A (askpass), для проверки пароля пользователя и вывода пароля на стандартный вывод выполняется (возможно, графическая) вспомогательная программа. Если задана переменная среды SUDO_ASKPASS, она указывает путь к вспомогательной программе. В противном случае, если /etc/sudo.conf содержит строку, определяющую программу askpass, это значение будет использоваться. Например:

 # 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 

Я добавляю это в свой сценарий bash:

 # ask for password up-front. sudo -v # Keep-alive: update existing sudo time stamp if set, otherwise do nothing. while true; do sudo -n true; sleep 60; kill -0 "$$" || exit; done 2>/dev/null & 

Найденный здесь:

https://serverfault.com/questions/266039/temporarlly-increasing-sudos-timeout-for-the-duration-of-an-install-script

https://gist.github.com/cowboy/3118588

Я использую другой скрипт для запуска моего основного сценария, и я использую файл .desktop для запуска этого вспомогательного скрипта. Это не очень просто, но его можно заставить работать на 100% GUI. Я все еще ищу идеальное решение, но сейчас это делает трюк.

Как насчет gksudo ?

 $ gksudo your_app_launcher.sh 

Он показывает графическое диалоговое окно для безопасного ввода пароля администратора.