В стандартной установке Ubuntu с использованием GNOME и сетевого администратора ключ WPA хранится в keyring GNOME. Это будет восстановлено с помощью /home.
Вы можете проверить, если это так в ваших настройках, временно отключив keyrings в ~/.gnome2 (сделайте резервную копию, прежде чем вы это сделаете!).
Единственное другое место, где я могу думать о том, где network-manager может получить ключ WPA, - etc/wpa_supplicant/wpa_supplicant.conf. Я даже не знаю, как этот файл мог переместиться в ваш / home (если это только то, что вы восстановили).
Я не использую Wicd, поэтому я не могу проверить настройки, но если ~ / .wicd пуст, тогда нет никаких шансов, что там хранятся какие-либо ключи. Возможно, вам захочется проверить, есть ли у wicd_gui другой путь для хранения вещей.
Более общий способ - написать «вспомогательную программу». Такая программа подскажет пользователю пароль; если вы уверены, что, скажем, Zenity, установлен, вы можете использовать его, иначе вам нужно будет написать вспомогательную программу на Python или что-то еще, что может взаимодействовать с GUI.
Прочитайте [ f1] для опций -A («askpass») и -S (stdin).
И помните, что при запуске sudo из вашего скрипта вам понадобится -H (home ), чтобы имитировать gksudo.
Этот метод работает хорошо, но вам нужно тщательно протестировать вспомогательную программу, чтобы убедиться, что она не содержит ошибок.
Нет, нет стандартного способа получения привилегий root (или любого другого пользователя).
Если вы хотите быть совместимыми с таким количеством систем, насколько это возможно, не предполагайте никакого способа, кроме как сказать пользователь, которому он / она должен запускать ваш скрипт в качестве конкретного пользователя. Затем пользователю / администратору нужно настроить систему, чтобы ваш сценарий работал надлежащим образом.
. Некоторые предложения о том, как использовать наиболее распространенные системы аутентификации, такие как su, sudo и ConsoleKit, будут будь милым.