Почему пользователи не должны использовать обычное sudo для запуска графических приложений?

88

Я прочитал документацию сообщества «RootSudo» и заинтересован в этой строке:

  

Вы должны никогда использовать обычный sudo для запуска графических приложений как Root.

Почему? В чем разница? Просьба дать простое объяснение, поскольку я обычный пользователь рабочего стола.

    
задан Nur 19.03.2013 в 16:35
источник

2 ответа

103

Графические приложения часто хранят настройки и другие пользовательские данные в файлах конфигурации, написанных внутри домашней папки . Основные приложения, используемые механизмом для определения того, что они должны использовать, поскольку домашняя папка пользователя - это переменная HOME . (Вы можете проверить его самостоятельно с помощью echo $HOME ).

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

Это основная причина, по которой вы должны запускать графические приложения с графическим интерфейсом sudo , а не с прямым sudo . В Ubuntu и большинстве его производных (включая Xubuntu и Lubuntu) стандартным графическим интерфейсом является gksu / gksudo , В Kubuntu это kdesudo . (Это зависит от среды рабочего стола .)

Если вы хотите использовать sudo напрямую для запуска графического приложения, например gedit , вы можете запустить:

sudo -H gedit

Флаг -H делает sudo установленным HOME , чтобы указать домашнюю папку root (которая /root ).

Это все еще не будет автоматически обрабатывать право собственности на .Xauthority , скопировав его на temp (это другое, что графические интерфейсы sudo заботятся о вас). Но в редком случае, когда .Xauthority недоступно, вы получите сообщение об ошибке, а затем устраните проблему, удалив ее ( sudo rm ~/.Xauthority ), поскольку она автоматически восстанавливается. Таким образом, защита прав и прав .Xauthority менее важна, чем защита прав собственности и разрешений конфигурационных файлов.

В отличие от root -owned .Xauthority , когда файлы конфигурации становятся принадлежащими как root , не всегда так очевидно, что проблема (поскольку графические программы часто запускаются, но не работают очень хорошо, и выводит любые полезные ошибки на консоль). И иногда возникает проблема с большими проблемами, особенно , если вы находитесь в ситуации, когда хотите, чтобы один или несколько файлов в вашем домашнем каталоге принадлежали кому-то, кроме вас (потому что тогда вы не можете это исправить просто рекурсивно chown всех ваших файлов обратно к себе).

Следовательно, sudo (по крайней мере, без -H ) не должно использоваться для запуска графического приложения , если вы не знакомы с внутренней работой приложения и не знаете, что это не когда-либо пытались написать какие-либо файлы конфигурации.

    
ответ дан Eliah Kagan 19.03.2013 в 16:49
источник
23

Проще говоря:

  

Это предотвращает доступ к файлам в вашем домашнем каталоге root.

Прочтите здесь . Кроме того, возможно дубликат В чем разница между «gksudo nautilus» и «sudo nautilus»?

    
ответ дан carnendil 19.03.2013 в 16:40