Ответы:
sudoзапрашивает пароль в командной строке и gksudoоткрывает диалоговое окно для него.
sudo -Eэквивалентно gksudo?
gksudoявляется GTK на основе фронтенда sudo(BTV, kdesudoявляется Qt на основе интерфейса), однако он (по умолчанию) обрабатывает более экологический переменные ( HOME, XAUTHORITYи т.д.) , чем в sudoрезультате чего запущенных команд , как корневая безопаснее.
Насколько я вижу, только ответ @Logics является правильным (@Ignacio Vazquez-Abrams не является полным). Вот попытка избежать разъяснения к @Davros @knitti answer / comments (пожалуйста, удалите / отредактируйте их, когда это не нужно):
sudo, используемый интерфейс НЕ является единственным отличием этих двух команд. HOMEуказывает переменная среды в sudoкоманда в некоторых системах и ситуациях). Не все приложения с графическим интерфейсом пишут в ваш домашний каталог, а не все приложения с интерфейсом командной строки - нет , поэтому тип команды не является ключевым моментом. sudoкоманду запуска GUI приложений в корневом каталоге (для просмотра вывода консольных приложений в качестве примера), однако вы должны ручки HOME(и другие , такие как XAUTHORITY, DISPLAY, ввод-метод связанных-материала и т.д.) переменные окружения правильно так что запущенное приложение не выйдет из строя, не потеряет функциональность и не сделает ничего плохого. Ниже моя текущая рекомендация по использованиюsudo
sudo -H <rest of the command>
sudoраздела 8 страницы руководства) -H ( HOME )Опция требует, чтобы в политике безопасности была задана HOMEпеременная среды для домашнего каталога целевого пользователя (по умолчанию root), как указано в базе данных паролей. В зависимости от политики это может быть поведение по умолчанию.sudoдомашнем каталоге вызывающегоsudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
sudo команды не одинаково на всех системах и может быть настроено с помощью visudoкоманды, пожалуйста, проверьте sudoers(5)man-страницу для получения дополнительной информации.Использование обычного sudo для запуска графических программ в редких случаях может испортить права на некоторые файлы. Для безопасности gksudo (или kdesudo в зависимости от ситуации) следует использовать для запуска программ с графическим интерфейсом. Я думаю, что это действительно ошибка, хотя я слышал объяснения, что gksudo понимает переменные X-сервера и sudo, возможно, не приводит к проблемам. Просто как совет; если вы запускаете графические программы от имени пользователя root, вместо того, чтобы открывать по одному терминалу для каждой программы, которую вы хотите запустить, введите ALT-F2 (alt и функциональная клавиша 2 одновременно), а затем введите всплывающее диалоговое окно «gksudo» Программа "без кавычек и программа заменяется на приложение, которое вы хотите запустить.
sudo работает как текущий пользователь с повышенными привилегиями. Это может привести к изменению прав доступа к файлам определенных пользовательских конфигурационных файлов (связанных с вашей графической средой) при запуске графических приложений. Вы можете обнаружить ошибки, возникающие при повторном запуске этих приложений без sudo.
gksudo (kdesudo под KDE) запускает приложения от имени пользователя root, поэтому любые права доступа к файлам относятся к файлам root, а не к файлам пользователей. повторный запуск этих приложений без gksudo / kdesudo всегда будет иметь ожидаемое поведение.
Текущий ответ неверен. Согласно вики Ubuntu RootSudo :
«Вы никогда не должны использовать обычный sudo для запуска графических приложений от имени пользователя root. Вы должны использовать gksudo (kdesudo на Kubuntu) для запуска таких программ. Gksudo устанавливает HOME = ~ root и копирует .Xauthority в каталог tmp. Это предотвращает файлы в вашем доме. каталог становится владельцем root. (AFAICT, это все, что особенного в среде запущенного процесса с gksudo vs. sudo). "