Які конкретні погані речі трапляються, коли gedit використовується із судо?


10

Я читаю цю відповідь, пояснюючи, що "інколи" root може мати щось у /home/$USERкаталозі.

Хтось може навести приклад, як це довести. Просто дайте тестовий випадок, коли щось справді погане відбувається, коли я бігаю

sudo gedit /etc/rc.local

редагуйте файл та збережіть.

У мене було багато голосів, які намагаються допомогти ОП , і коментарі затопили, кажучи, що керувати гедітом із судо це злочин.

Хтось може надати реальний приклад?

Я чітко пояснив, чому це запитання не є дублікатом. Немає конкретної відповіді на gedit на пов'язане питання.

І важливо пояснити, чому широко застосовується sudo geditце погано, чи не насправді тощо.


2
Завжди використовував його з судо, ніколи не виникав проблем. Хороше питання.
Даріо Сальваті

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

1
Що стосується rc.local, це сценарій рівня запуску, він повинен належати root, отже sudo не впливає на нього. Спробуйте це з ~ / .bashrc. Я не думаю, що оболонка буде приймати цей файл, якщо він належить root і повинен регресувати до налаштувань за замовчуванням. Але це лише пропозиція. Я повернусь завтра, подивіться, як це питання
Сергій Колодяжний

1
Для більшості редакторів це не відкриття, його натискання Зберегти. mOst редагування також зберігає налаштування s десь, тож якщо ви / це зміните налаштування, то оновіть їх.
Вільф

2
Що варто, я просто редагую його на місці, щоб використовувати його, -Hколи бачу.
muru

Відповіді:


11

Наскільки sudo geditнічого страшного, лише погана практика, особливо, як пізно. Наскільки важче було б запропонувати sudo -H gedit?

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

Що ж сталося?

Ви отримуєте пару файлів, що належать root, у вашій домашній папці. Один ( recently-used.xbel), ймовірно, повернеться у власність користувача. Це може статися, коли файл буде видалено та створено заново. Щоб побачити, що sudo geditзмінилося, запустіть find ~ -user root -group rootі подивіться, що повернуто. За замовчуванням це не повинно бути нічого.

За допомогою цієї команди ви можете побачити пару файлів, що належать root. Одне було б новим .file, .gvfsрано чи пізно, корінним ~/.cache/dconfта вищезгаданим recently-used.xbel.

Тож ніякі речі "небо не провалюється", але все ж. Зараз з'явилися повідомлення про те, що подальше використання викликає інші проблеми, але не збираюся претендувати на те, чого я тут не бачу.

Також зауважте, що станом на 13.10 a sudo geditбуде використовуватись gedit config користувача, а не root gedit config. Знову лише погана практика, то чому б продовжувати це чи пропонувати іншим робити це?


1
Іноді я також користуюся можливістю показати користувачам, як користуватися нано, оскільки це легко і в більшості випадків може витіснити gedit. Однак є деякі випадки, коли gedit все-таки краще, ніж нано, навіть для тих, хто вміє користуватися. Також sudo gedit може призвести до sudo nautilus, що, мабуть, гірше .. (Тут у мене включений pkexec gedit, але це виходить за рамки цієї дискусії
doug

@wjandrea, добре звучить, відредаговано
doug

12

Ну, можливо, це фантазія, але є багато людей, які говорять те саме:

  • Чому я повинен використовувати gksudo для програм Gtk замість sudo?

    Однак є й інші випадки, коли побічні ефекти можуть бути такими ж легкими, як розширення Firefox, не стирчать або настільки екстремальними, як неможливість увійти в систему, оскільки дозволи на ваш .ICEauthority змінилися.

  • Чому користувачі ніколи не повинні використовувати звичайний sudo для запуску графічних програм?

    Припустимо, ви використовуєте gedit (графічний редактор тексту) як корінь. Якщо ви запустили sudo gedit, HOME продовжить вказувати на ваш домашній каталог, навіть якщо програма працює як root. Отже, gedit запише конфігураційні файли як корінь у ваш домашній каталог. Іноді це призведе до того, що файли конфігурації належать root та, таким чином, недоступні для вас (коли пізніше ви запускаєте програму як себе, а не як root).

  • Як запустити програму GUI як іншого користувача (Debian)?

    По-перше, не використовуйте sudo чи su для того, щоб змінити користувачів для запуску графічного процесу, або ви можете мати проблеми вниз (~ / .ICEauthority change last - важлива проблема). Замість цього створіть ярлик, який використовує таку команду:

  • Запуск судо графічно

    Ну, якщо бути чесним, то в більшості випадків це не так. У багатьох програмах ви можете запустити їх неналежним чином - використовуючи sudo для графічних додатків і не бачачи негативних побічних ефектів.

    ...

    Ці помилки трапляються, оскільки іноді під час sudoзапуску програми він запускається з привілеями root, але використовує файл конфігурації користувача.

    Цей поштовий архів може також зацікавити вас.

Отже, давайте перевіримо це.

2 абсолютно нових віртуальних коробки. Ubuntu 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/) належить корені ( .., .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програму GUI.

Заключний тест: запустіть його зі значками -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. Чи слід позначити як "не відповідь"? Або "дуже погана якість" хоч і довга?)))
Пілот6

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.