Графические приложения часто хранят настройки и другие пользовательские данные в файлах конфигурации, записанных в домашней папке пользователя . Основным механизмом, который приложения используют для определения того, что они должны использовать в качестве домашней папки пользователя, является HOME переменная окружения . (Вы можете проверить это сами echo $HOME).
Предположим, вы работаете gedit(графический текстовый редактор) как root. Если вы запустите sudo gedit, HOMEбудет продолжать указывать на ваш домашний каталог, даже если программа работает какroot . Следовательно, geditфайлы конфигурации будут записываться какroot в ваш домашний каталог. Это иногда приводит в файлах конфигурация будучи принадлежащий наroot и , следовательно , недоступные для вас (если вы позже запустить программу , как сами себя , а не как root). В основном это происходит, когда приложение должно создать новый файл конфигурации. По умолчанию вновь созданные файлы принадлежат пользователю, который их создает (в данном случае это rootне вы).
Это основная причина, почему вы должны запускать графические приложения с графическим sudoинтерфейсом, а не с прямым sudo. В Ubuntu и большинстве его производных (включая Xubuntu и Lubuntu) стандартным графическим интерфейсом является gksu/gksudo . В Кубунту это так kdesudo. (Это зависит от используемой среды рабочего стола .)
Если вы хотите использовать sudoнепосредственно для запуска графического приложения, как gedit, вы можете запустить:
sudo -H gedit
-HФлаг делает sudoнабор , HOMEчтобы указать на root«s домашней папки (это /root).
Это все равно не будет автоматически обрабатывать владение .Xauthority, копируя его во временную папку (это еще одна вещь, о которой sudoзаботятся графические интерфейсы). Но в нечастом событии, .Xauthorityкоторое недоступно, вы получите сообщение об ошибке, и это можно исправить, удалив его ( sudo rm ~/.Xauthority), так как он автоматически создается заново. Таким образом, защита .Xauthorityвладения и разрешений менее важна, чем защита владения и разрешений файлов конфигурации.
В отличие от root-owned .Xauthority, когда файлы конфигурации становятся собственностью as root, проблема не всегда очевидна (поскольку графические программы часто работают, но работают не очень хорошо и выводят любые полезные ошибки на консоль). И иногда это труднее исправить, особенно если вы находитесь в ситуации, когда вы хотите, чтобы один или несколько файлов в вашем домашнем каталоге принадлежали кому-то, кроме вас (потому что тогда вы не можете это исправить, просто рекурсивно chownизвлекая все свои файлы обратно к себе).
Поэтому sudo(по крайней мере, без -H) не следует использовать для запуска графического приложения, если вы не очень хорошо знакомы с внутренней работой приложения и точно знаете, что оно никогда не пытается писать какие-либо файлы конфигурации.