Какие конкретные плохие вещи случаются, когда gedit используется с sudo?


10

Я прочитал этот ответ, объяснив, что «иногда» root может владеть чем-то в /home/$USERкаталоге.

Может кто-нибудь привести пример, как это доказать. Просто приведите тестовый случай, когда случится что-то действительно плохое

sudo gedit /etc/rc.local

отредактируйте файл и сохраните.

Я получил много отрицательных отзывов, пытаясь помочь OP , и комментарии затопили, сказав, что запускать gedit с sudo - преступление.

Кто-нибудь может привести реальный пример?

Я четко объяснил, почему этот вопрос не является дубликатом. Нет конкретного ответа для gedit на связанный вопрос.

И важно объяснить, почему широко используемый sudo geditплохо или не очень, и т. Д.


2
Всегда использовал его с sudo, никогда не возникало проблем. Хороший вопрос.
Дарио Сальвати

1
@Wilf, nano любит писать ~ / .nano_history, который, если вы запускаете его с помощью sudo, заставляет файл принадлежать пользователю root, поэтому, когда вы запускаете nano без sudo, он жалуется, что не может получить доступ к файлу. Простое sudo chownисправление.
psusi

1
Что касается rc.local, то это сценарий уровня запуска, он должен принадлежать пользователю root, поэтому sudo не влияет на него. Попробуйте это с ~ / .bashrc. Я не думаю, что shell примет этот файл, если он принадлежит root и должен вернуться к настройкам по умолчанию. Но это всего лишь предложение. Я вернусь завтра, посмотрим, как этот вопрос
Сергей Колодяжный

1
Для большинства редакторов это не открытие, это нажатие SAVE. Большинство редакторов также сохраняют настройки где-нибудь, поэтому, если вы измените настройки, они обновят их.
Уилф

2
Для чего это стоит, я просто редактирую его на месте, чтобы использовать, -Hкогда вижу.
Муру

Ответы:


11

Насколько sudo geditничего страшного, просто плохая практика, особенно в последнее время. Насколько сложнее было бы предложить sudo -H gedit?

-H,--set-home Запросите, чтобы в политике безопасности была задана переменная среды HOME для домашнего каталога, указанного в записи базы данных паролей целевого пользователя. В зависимости от политики это может быть поведение по умолчанию.

Что же произошло?

Вы получаете пару корневых файлов в вашей домашней папке. Один ( recently-used.xbel), скорее всего, вернется в собственность пользователя. Это может произойти, когда файл удален и создан заново. Чтобы увидеть, что sudo geditизменилось, запустите find ~ -user root -group rootи посмотрите, что возвращается. По умолчанию это должно быть ничто.

С помощью этой команды вы можете увидеть пару файлов, принадлежащих пользователю root. Один будет новым .file, .gvfsа рано или поздно коренным ~/.cache/dconfи вышеупомянутым recently-used.xbel.

Так что нет «небо рушится», но все же. Теперь появились сообщения о том, что дальнейшее использование вызывает другие проблемы, но не претендует на то, чего я здесь не вижу.

Также обратите внимание, что с 13.10 a sudo geditбудет использоваться конфигурация gedit пользователя, а не конфигурация gedit root. Опять просто плохая практика, так зачем продолжать это делать или предлагать другим делать это?


1
Иногда я теперь также пользуюсь возможностью, чтобы показать пользователям, как использовать nano, поскольку это легко и в большинстве случаев может заменить gedit. Однако в некоторых случаях gedit все еще лучше, чем nano, даже для тех, кто знает, как использовать. Также sudo gedit может привести к sudo nautilus, что, вероятно, хуже .. (Здесь у меня есть gedit с поддержкой pkexec, но это выходит за рамки этого обсуждения
doug

@wjandrea, звуки хорошо, отредактирован
Дуг

12

Ну, может быть, это фантастика, но многие люди говорят одно и то же:

  • Почему я должен использовать gksudo для приложений Gtk вместо sudo?

    Однако бывают и другие случаи, когда побочные эффекты могут быть такими же слабыми, как и не зависающие расширения Firefox, или настолько сильными, как невозможность входа в систему из-за изменения прав доступа к вашему .ICEauthority.

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

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

  • Как запустить программу с графическим интерфейсом от имени другого пользователя (Debian)?

    Во-первых, не используйте sudo или su, чтобы изменить пользователей для запуска графического процесса, или вы можете столкнуться с проблемами в дальнейшем (~ / .ICEauthority change owner является заметной проблемой). Вместо этого создайте ярлык, который использует следующую команду:

  • Запуск Судо Графически

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

    ...

    Эти ошибки возникают из-за того, что иногда при sudoзапуске приложения оно запускается с правами root, но использует файл конфигурации пользователя.

    Этот почтовый архив также может быть вам интересен.

Итак, давайте проверим это.

2 совершенно новые виртуальные коробки. Убунту 14.04. Никогда не запускайте Firefox на них. Что произойдет, когда я выполню команду sudo firefox?

tim@Hairy14CVB:~$ sudo firefox    
(process:4857): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed

...

shutdownObserver@XPIProvider.jsm:2192:13

Это одинаково (или, по крайней мере, очень похоже) для обеих виртуальных коробок. Пока Firefox был запущен, я установил расширение для YouTube - популярное. Затем я закрыл Firefox и проверил вывод.

tim@Hairy14CVB:~$ ls -la .ICEauthority 
-rw------- 1 tim tim 1336 Jun  4 21:31 .ICEauthority

Ну .ICEauthorityхорошо! Однако...

tim@Hairy14CVB:~$ ls -la | grep root
drwxr-xr-x  3 root root 4096 Jun  1 20:49 ..
drwx------  3 root root 4096 Jun  5 22:41 .dbus
drwx------  4 root root 4096 Jun  5 22:41 .mozilla

3 вещи в моей домашней папке ( /home/tim/) принадлежат пользователю root ( .., .dbusи .mozilla). Это одинаково (или, по крайней мере, очень похоже) для обеих виртуальных коробок.

Итак, имеет ли это значение. Я не был уверен, поэтому я запустил Firefox, вот так:

tim@Hairy14CVB:~$ firefox

(process:4959): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
Error: Access was denied while trying to open files in your profile directory.

И эта безобразная ошибка

введите описание изображения здесь

Для получения полной информации о терминале (включая болтовню в Firefox), смотрите эти две вставки здесь и здесь .

Кстати, я все еще могу запустить Firefox от имени пользователя root. Но теперь больше файлов были изменены:

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  4 root root  4096 Jun  3 19:46 ..
drwx------  3 root root  4096 Jun  5 22:55 .adobe
drwx------  3 root root  4096 Jun  5 22:40 .dbus
drwx------  3 root root  4096 Jun  5 22:55 .macromedia
drwx------  4 root root  4096 Jun  5 22:40 .mozilla

Это потому, что я загрузил изображение на imgur.com? Не уверен.

Как я это исправил? chown, Я не понимаю этого, но интернет сказал, чтобы это делалось, и это Виртуальный ящик, так что, Йоло.

sudo chown -R tim:tim /home/tim/

И это исправило это. Теперь вывод - это просто ..файл:

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  4 root root  4096 Jun  3 19:46 ..

И то же самое на моем реальном компьютере. Да, и на моей виртуальной коробке Kubuntu:

tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x  3 root root  4096 May 16 14:10 ..

На котором я никогда даже не запускал команду sudo. Так что все хорошо. Просто не запускайте sudoприложение с графическим интерфейсом.

Заключительный тест: запустить его с -Hи на -iфлагах:

sudo -H firefox

и

sudo -i firefox

И хорошие новости! Тем не менее, единственная корневая «вещь» есть ... И я могу бегать firefoxбез рута.


ОП хочет, чтобы я рассказал о Гедите.

Я побежал

sudo gedit

Затем установил несколько случайных плагинов. Это был выход:

tim@Hairy14VB:~$ ls -la | grep root
ls: cannot access .gvfs: Permission denied
drwxr-xr-x  4 root root   4096 Jun  3 19:46 ..

Обратите внимание, что я не могу даже просмотреть владельца, .gvfsпоэтому я сделал это:

tim@Hairy14VB:~$ sudo ls -la | grep root
drwxr-xr-x  4 root root   4096 Jun  3 19:46 ..
dr-x------  2 root root      0 Jun  6 10:05 .gvfs

Таким образом, запуск sudo geditменяет файл в моей домашней директории на root.

Я все еще могу открыть Gedit, но на этот раз я вывезу мусор:

(gedit:7422): Gtk-WARNING **: Attempting to read the recently used resources file at `/home/tim/.local/share/recently-used.xbel', but the parser failed: Failed to open file '/home/tim/.local/share/recently-used.xbel': Permission denied.

И это говорит о том, что есть другой файл ( ~.local/share/recently-used.xbel), который был изменен. Я думаю, что это список недавно использованных файлов, и (к счастью) у меня больше нет списка недавно использованных файлов:

Там должен быть файл с именем output2.txt.save2. Мои местоимения Он / Он


1
Вы написали все, кроме ответа на вопрос. Просто дайте контрольный пример с gedit. Должен ли я пометить как "не ответ"? Или "очень плохое качество" хоть и долго?)))
Pilot6

5
@ Pilot6 - в вопросе Can anyone give an example how to prove it ..... Can anyone give a real example?- и это ссылается на прошлые вещи и дает пример того, что может случиться с firefox в качестве пользователя root. Должен ли я отметить ваш комментарий как «неконструктивный», поскольку я не могу найти «странно сварливый»? будь хорошим cmon :)
Уилф

1
О, пожалуйста, не используйте, ls -la|grep rootно find . -uid 0илиfind . -user root
solsTiCe

1
@ Pilot6 хорошо, я отредактировал, чтобы включить кое-что о gedit. Я не думаю, что это что-то добавляет к моему ответу, но вы, кажется, хотите этого так ...
Тим

4
И цитаты, и подробные примеры делают это супер-полезным! Я рад, что вы добавили Gedit, но я согласен с @Wilf, что это было хорошо даже раньше. Это не просто примеры Gedit, которые я (намеренно) не включил туда . Если люди хотят, я могу добавить короткую заметку о «иногда», но я действительно думаю, что этот вопрос является отдельным, и я проголосовал за его открытие . Если мы снова откроем это, я постараюсь добавить еще один ответ с более подробной информацией о Gedit, но это все равно будет наиболее полезным ответом для большинства людей.
Элия ​​Каган
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.