Я прочитал документацию сообщества "RootSudo" и заинтересован в этой строке:
Вы никогда не должны использовать обычный sudo для запуска графических приложений от имени Root.
Почему? В чем разница? Пожалуйста, предоставьте простое объяснение, так как я обычный пользователь рабочего стола.
Ответы:
Графические приложения часто хранят настройки и другие пользовательские данные в файлах конфигурации, записанных в домашней папке пользователя . Основным механизмом, который приложения используют для определения того, что они должны использовать в качестве домашней папки пользователя, является
HOME
переменная окружения . (Вы можете проверить это самиecho $HOME
).Предположим, вы работаете
gedit
(графический текстовый редактор) какroot
. Если вы запуститеsudo gedit
,HOME
будет продолжать указывать на ваш домашний каталог, даже если программа работает какroot
. Следовательно,gedit
файлы конфигурации будут записываться какroot
в ваш домашний каталог. Это иногда приводит в файлах конфигурация будучи принадлежащий наroot
и , следовательно , недоступные для вас (если вы позже запустить программу , как сами себя , а не какroot
). В основном это происходит, когда приложение должно создать новый файл конфигурации. По умолчанию вновь созданные файлы принадлежат пользователю, который их создает (в данном случае этоroot
не вы).Это основная причина, почему вы должны запускать графические приложения с графическим
sudo
интерфейсом, а не с прямымsudo
. В Ubuntu и большинстве его производных (включая Xubuntu и Lubuntu) стандартным графическим интерфейсом являетсяgksu
/gksudo
. В Кубунту это такkdesudo
. (Это зависит от используемой среды рабочего стола .)Если вы хотите использовать
sudo
непосредственно для запуска графического приложения, какgedit
, вы можете запустить:-H
Флаг делаетsudo
набор ,HOME
чтобы указать наroot
«s домашней папки (это/root
).Это все равно не будет автоматически обрабатывать владение
.Xauthority
, копируя его во временную папку (это еще одна вещь, о которойsudo
заботятся графические интерфейсы). Но в нечастом событии,.Xauthority
которое недоступно, вы получите сообщение об ошибке, и это можно исправить, удалив его (sudo rm ~/.Xauthority
), так как он автоматически создается заново. Таким образом, защита.Xauthority
владения и разрешений менее важна, чем защита владения и разрешений файлов конфигурации.В отличие от
root
-owned.Xauthority
, когда файлы конфигурации становятся собственностью asroot
, проблема не всегда очевидна (поскольку графические программы часто работают, но работают не очень хорошо и выводят любые полезные ошибки на консоль). И иногда это труднее исправить, особенно если вы находитесь в ситуации, когда вы хотите, чтобы один или несколько файлов в вашем домашнем каталоге принадлежали кому-то, кроме вас (потому что тогда вы не можете это исправить, просто рекурсивноchown
извлекая все свои файлы обратно к себе).Поэтому
sudo
(по крайней мере, без-H
) не следует использовать для запуска графического приложения, если вы не очень хорошо знакомы с внутренней работой приложения и точно знаете, что оно никогда не пытается писать какие-либо файлы конфигурации.источник
sudo chmod -R $USER:$USER ~
К сожалению, эти критерии не всегда применяются. Если у вас есть какие-либо файлы, где вам нужно сохранить владельца группы, вы можете запуститьsudo chmod -R $USER ~
. Обычно этого достаточно. (Если у вас есть файлы, которые должны принадлежать другому пользователю в вашем домашнем каталоге, даже это будет проблемой.)chmod
самом деле это делает? Я всегда думал, чтоchown
это сделал это.chmod
никогда не делал это для меня.chown
а неchmod
в моих комментариях выше. Извините за это - и спасибо за указание на это!sudo -H echo $HOME
, ваша оболочка - работает , как вы, а не суперпользователя - выполняет разложение параметра на$HOME
, получая путь вашей домашней директории, а затем передает егоsudo
, в свою очередь , проходит уже расширенное значениеecho
, которое выводит его.sudo -H printenv HOME
,sudo -H bash -c 'echo $HOME'
Иsudo -H sh -c 'echo $HOME'
все печати/root
. Концептуально это похоже - хотя и с помощью другого механизма - на то, какx=a echo "$x"
не печататьa
(еслиx
уже не было значенияa
).Проще говоря:
Прочитайте это здесь . Кроме того, возможно, дубликат В чем разница между "gksudo nautilus" и "sudo nautilus"?
источник
Альтернативой
gksu nautilus
иgksu gedit
является использованиеnautilus-admin
дополнения. Это позволяет вам просматривать файлы и каталоги с помощью Nautilus, а затем открывать их как root (администратор).Установка прямо вперед:
Теперь, когда вы находитесь в nautilus, у вас будет дополнительная опция Редактировать как администратор:
gedit
как root не позволяет настройкиКогда вы запускаете
gedit
от имени пользователя root, вы не можете использовать настройки, которые вы установили в качестве обычного пользователя, для остановки табуляции, преобразования табуляции в пробелы, имени шрифта, размера шрифта, переноса строк и т. Д.Чтобы решить эту проблему, я написал скрипт
sgedit
для наследования пользовательских настроек и применения их к root: Как я могу синхронизировать мой корневой gedit с настройками моего пользовательского gedit?sgedit filename1 filename2 ...
sudo -H
сохранить владение файлом, получая полномочия root.sudo
раз истек.gedit
как фоновая задача, так что подсказка терминала появляется снова немедленно.источник