В чем разница между «гксудо наутилус» и «судо наутилус»?

100

Я использую gksudo nautilusи sudo nautilusчерез Alt+ F2.

Какая разница? Они выглядят очень похоже!

DrKenobi
источник
очень полезное объяснение / обсуждение, включающее множество скриншотов: psychocats.net/ubuntu/graphicalsudo
чокнутый о natty

Ответы:

113

Взято отсюда :

Вы никогда не должны использовать normal sudoдля запуска графических приложений от имени пользователя root. Вы должны использовать gksudo( kdesudoна Kubuntu) для запуска таких программ. gksudoустанавливает HOME=/rootи копирует .Xauthorityв tmpкаталог. Это предотвращает принадлежность файлов в вашем домашнем каталоге пользователю root.

Обратите внимание, что это в первую очередь о файлах конфигурации . Если вы запустите Nautilus как root, даже с gksu/ gksudo, и создадите файл или папку где угодно с ним (в том числе в своем домашнем каталоге), этот файл или папка будет принадлежать root. Но если вы запустите Nautilus (или большинство других графических приложений) , как rootс sudo, они могут сохранить свои конфигурационные файлы в вашем домашнем каталоге (а не rootдомашний каталог). Эти файлы конфигурации могут принадлежать rootи недоступны, когда вы не работаете от имени пользователя root, что может серьезно испортить ваши настройки и даже может помешать работе некоторых приложений в целом.

Решение, после того как вы сделали эту ошибку, состоит в том, чтобы найти файлы конфигурации и удалить их или chownих обратно в собственность вашего не rootпользователя. Многие такие файлы начинаются с .или содержатся в каталоге, который начинается с .. Некоторые из них находятся внутри .configпапки в вашем домашнем каталоге. Чтобы просмотреть файлы и папки, начинающиеся с .буквы « а» в Nautilus, нажмите Ctrl+ H(это показывает скрытые файлы .) Чтобы просмотреть их с lsпомощью флага -a(или -A).

Чтобы выяснить, есть ли в вашем домашнем каталоге файлы, не принадлежащие вам, вы можете использовать следующую команду в терминале:

find $HOME -not -user $USER -exec ls -lad {} \;

в котором будут перечислены все файлы в домашнем каталоге, которые не принадлежат пользователю.

Rmano
источник
1
Я уже использовал «sudo nautilus». Это означает, что мой домашний каталог теперь принадлежит пользователю root? (PS: мой английский не идеален)
DrKenobi
22
Нет, это означает, что во время работы Nautilus от имени root все файлы, созданные в домашнем каталоге, будут принадлежать пользователю root. Это может включать эскизы и другие вспомогательные файлы, которые Nautilus создает автоматически.
Райан Томпсон
1
, Цитируемый segemnet, который вы использовали, озадачил меня с тех пор, как я впервые прочитал его; в частности там, где говорится: «Это предотвращает принадлежность файлов в вашем домашнем каталоге пользователю root». .. Я проверил это сегодня, создав несколько тестовых файлов 10.04, 10.04 (ВМ), 10.10 (ВМ) и независимо от того, как я запустил sudo / gksudo (Терминал-> Наутилус, Терминал-> Гедит, Alt + F2 .. . ... ... во всех случаях мой недавно созданный владел "root" с группой "root" .. Может быть, я что-то упустил, но я думаю, что часть цитируемого сегмента вводит людей в заблуждение ...
Питер. О
Хм, я просто цитировал вики-страницу. У меня нет глубокого понимания разницы между этими двумя инструментами. Возможно, кто-то на unix.stakexchange.com может помочь?
2
@ Peter.O Я расширил этот ответ, чтобы ответить на этот вопрос и объяснить, с какими файлами по-разному обращаются sudo, через gksu/ gksudo. (@ChrisWilson Не стесняйтесь откатить или откорректировать это редактирование, если вы чувствуете, что оно не полностью входит в рамки вашего ответа ... мне кажется, что это так, но это полностью ваш призыв.)
Элия ​​Каган
9

Знаете ли вы, что есть дополнение Nautilus под названием nautilus-gksu,Установить наутилус-гксу которое добавляет «открыть как администратор» в меню правой кнопки мыши nautilus?

Примечание. Недоступно в Ubuntu 12.04 и более поздних версиях.

robin0800
источник
1
nautilus-gksuбольше не доступен в Ubuntu 12.04 и выше.
IQAndreas
А ваша ссылка показывает только то, что она доступна до 11.10 ...
Уилф
5

Если вы запустите графическое приложение с помощью sudo, вы можете испортить владение вашими файлами, что может привести к поломке ваших приложений. Никогда не делай этого. Проверьте Справку Сообщества :

Вы никогда не должны использовать обычный sudo для запуска графических приложений от имени Root . Вы должны использовать gksudo (kdesudo на Kubuntu) для запуска таких программ. gksudo устанавливает HOME = ~ root и копирует .Xauthority в каталог tmp. Это предотвращает принадлежность файлов в вашем домашнем каталоге Root. (AFAICT, это все, что особенного в среде запущенного процесса с gksudo vs. sudo).

desgua
источник
3

По умолчанию sudo сохраняет вашу переменную $ HOME. Например, если вы запустите, sudo firefoxвы будете работать с привилегиями root, но с вашей конфигурацией. Если вы измените настройки в этой ситуации, вы получите части своей конфигурации, принадлежащие пользователю root, а не свой идентификатор пользователя.

Марк Рассел
источник
Мне нравится уверенность в этом ответе.
Андре Фигейредо
2

sudo -H GUI-application-program

В Ubuntu (17.10) 17.10.1 и, вероятно, будущие версии Ubuntu gksuи gksudoустарели. Они работают в Xorg, но не в Wayland. Но вы можете использовать sudo -Hдля запуска прикладных программ с графическим интерфейсом без ущерба для ваших файлов конфигурации. Как не использовать обычный sudo.

Если вы используете Wayland (новую графическую систему, заменяющую Xorg), вам также нужна команда с xhost.

xhost +si:localuser:root       # if Wayland
sudo -H nautilus --no-desktop

Смотрите следующую ссылку для более подробной информации,

Почему gksu / gksudo или запуск графического приложения с sudo не работают с Wayland?

sudodus
источник
-2

Найдено в файле, сгенерированном командой терминала 'info gksudo':

gksu - это интерфейс su, а gksudo - интерфейс sudo. Их основная цель - запуск графических команд, которым требуется root, без необходимости запуска эмулятора X-терминала и непосредственного использования su.

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

Для новичка в терминале введите или вставьте информацию о команде с именем команды, в которой вы заинтересованы в качестве параметра. Формат такой info [command_name](не забудьте включить командную строку или скобки). Предлагаемые терминальные записи для начинающих:

$ info
$ info info
Джеймс
источник
-3

Если вы выбираете gksudo nautilus, вы спрашиваете свой пароль графически. С sudo вы спрашиваете это в терминале

winniemiel05
источник
6
Это не единственная разница, и часто это не самая важная разница. (См. Некоторые другие ответы здесь.)
Элия ​​Каган