У gksu (do) также есть собственная конфигурация переменных окружения, которые нужно передать дочернему элементу, отдельно от собственных функций su (do). Например, если в вашей конфигурации sudoers указано! Keep_env, отсутствие $ DISPLAY может помешать запуску графических приложений, но gksudo должен работать. Вы можете найти некоторые подробности на git.debian.org/?p=users/kov/gksu-polkit.git;a=blob;f=common/… или live.gnome.org/gksu .
Эфимент
@ephemient Так что кроме графического приглашения, sudo -Eэквивалентно gksudo?
Я хочу подчеркнуть, что это не принципиальная разница, и этот ответ вводит в заблуждение новичков. Основное различие объясняется здесь: askubuntu.com/a/11766/81034 и ответ ниже (который связан с @johnywhy) выходит за рамки этого, чтобы добавить некоторый нюанс. Пожалуйста, прочтите вопрос аскубунту, а не полагайтесь на этот вводящий в заблуждение ответ.
sundar - Восстановить Монику
31
gksudoявляется GTK на основе фронтенда sudo(BTV, kdesudoявляется Qt на основе интерфейса), однако он (по умолчанию) обрабатывает более экологический переменные ( HOME, XAUTHORITYи т.д.) , чем в sudoрезультате чего запущенных команд , как корневая безопаснее.
Насколько я вижу, только ответ @Logics является правильным (@Ignacio Vazquez-Abrams не является полным). Вот попытка избежать разъяснения к @Davros @knitti answer / comments (пожалуйста, удалите / отредактируйте их, когда это не нужно):
Хотя обе команды действительно представляют sudo, используемый интерфейс НЕ является единственным отличием этих двух команд.
Запуск программы с графическим интерфейсом не единственная ситуация, когда вы должны использовать gk / kdesudo, вместо этого вы должны использовать gk / kdesudo всякий раз, когда вы не можете определить, будет ли команда создавать / записывать файлы в ваш домашний каталог (на что 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>
Это должно позволить <GUI программе> выполняться в терминале TTY и отображаться в вашей рабочей среде
Поведение sudo команды не одинаково на всех системах и может быть настроено с помощью visudoкоманды, пожалуйста, проверьте sudoers(5)man-страницу для получения дополнительной информации.
кажется, гораздо лучшее объяснение, чем то, которое получает все голоса. более тщательно, более правильно. даже ОП ответила "это все?" на ответ, который получил все голоса.
Джонни, почему
2
Использование обычного sudo для запуска графических программ в редких случаях может испортить права на некоторые файлы. Для безопасности gksudo (или kdesudo в зависимости от ситуации) следует использовать для запуска программ с графическим интерфейсом. Я думаю, что это действительно ошибка, хотя я слышал объяснения, что gksudo понимает переменные X-сервера и sudo, возможно, не приводит к проблемам. Просто как совет; если вы запускаете графические программы от имени пользователя root, вместо того, чтобы открывать по одному терминалу для каждой программы, которую вы хотите запустить, введите ALT-F2 (alt и функциональная клавиша 2 одновременно), а затем введите всплывающее диалоговое окно «gksudo» Программа "без кавычек и программа заменяется на приложение, которое вы хотите запустить.
sudo работает как текущий пользователь с повышенными привилегиями. Это может привести к изменению прав доступа к файлам определенных пользовательских конфигурационных файлов (связанных с вашей графической средой) при запуске графических приложений. Вы можете обнаружить ошибки, возникающие при повторном запуске этих приложений без sudo.
gksudo (kdesudo под KDE) запускает приложения от имени пользователя root, поэтому любые права доступа к файлам относятся к файлам root, а не к файлам пользователей. повторный запуск этих приложений без gksudo / kdesudo всегда будет иметь ожидаемое поведение.
«Вы никогда не должны использовать обычный sudo для запуска графических приложений от имени пользователя root. Вы должны использовать gksudo (kdesudo на Kubuntu) для запуска таких программ. Gksudo устанавливает HOME = ~ root и копирует .Xauthority в каталог tmp. Это предотвращает файлы в вашем доме. каталог становится владельцем root. (AFAICT, это все, что особенного в среде запущенного процесса с gksudo vs. sudo). "
Есть четыре других ответа; какой из них неправильный? Разве ваш ответ по существу не такой же, как и ответ Давроса?
fixer1234
Я имел в виду ответ, помеченный как правильный. Да, Даврос говорит то же самое, но я добавил это, потому что он не содержал ссылку на источник.
eugene1832
1
Лучшим решением было бы предложить изменить этот ответ. Улучшение ответа, вероятно, будет принято (+2 повторения), в то время как дублирование ответа, вероятно, привлечет отрицательные отзывы.
Ответы:
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). "
источник