Jakie szczególne złe rzeczy dzieją się, gdy gedit jest używany z sudo?

10

Przeczytałem tę odpowiedź, wyjaśniając, że „czasami” root może posiadać coś w /home/$USERkatalogu.

Czy ktoś może podać przykład, jak to udowodnić? Po prostu daj test, gdy coś się dzieje naprawdę źle, kiedy biegnę

sudo gedit /etc/rc.local

edytuj plik i zapisz.

Mam wiele negatywnych opinii próbujących pomóc OP i komentarze zalewają, mówiąc, że uruchamianie gedit z sudo jest przestępstwem.

Czy ktoś może podać prawdziwy przykład?

Wyjaśniłem jasno, dlaczego to pytanie nie jest duplikatem. Nie ma konkretnej odpowiedzi na gedit na powiązane pytanie.

I ważne jest, aby wyjaśnić, dlaczego szeroko stosowany sudo geditjest zły, czy nie tak naprawdę itp.

Pilot 6
źródło
2
Zawsze używałem go z sudo, nigdy nie miałem problemu. Dobre pytanie.
Dario Salvati,
1
@ Wilf, nano lubi pisać ~ / .nano_history, która jeśli uruchomisz go z sudo, powoduje, że plik jest własnością root, więc kiedy uruchamiasz nano bez sudo, narzeka, że ​​nie może uzyskać dostępu do pliku. Prosty sudo chownto naprawia.
psusi
1
Jeśli chodzi o rc.local, jest to skrypt na poziomie uruchamiania, powinien on być własnością root, dlatego sudo nie ma na to żadnego wpływu. Wypróbuj z ~ / .bashrc. Nie sądzę, że shell zaakceptuje ten plik, jeśli jest własnością root i powinien zresetować się do ustawień domyślnych. Ale to tylko sugestia. Wrócę jutro, zobaczymy, jak to pytanie
Sergiy Kolodyazhnyy
1
Dla większości redaktorów nie jest to otwarcie, jego naciśnięcie ZAPISZ. MOJE editros również gdzieś zapisują ustawienia, więc jeśli zmodyfikujesz ustawienia, zaktualizujesz je.
Wilf
2
Jeśli chodzi o to, co warto, po prostu edytuję go w miejscu, aby użyć, -Hgdy go zobaczę.
muru

Odpowiedzi:

11

O ile sudo geditnic nie jest straszne, po prostu zła praktyka, szczególnie późna. O ile trudniej byłoby zasugerować sudo -H gedit?

-H,--set-home Żądaj, aby polityka bezpieczeństwa ustawiła zmienną środowiskową HOME na katalog osobisty określony przez wpis bazy danych haseł użytkownika docelowego. W zależności od zasad może to być zachowanie domyślne.

Co się dzieje

Dostajesz kilka plików należących do katalogu głównego w swoim katalogu domowym. Jeden ( recently-used.xbel) prawdopodobnie powróci do własności użytkownika. Może się to zdarzyć, gdy plik zostanie usunięty i ponownie utworzony. Aby zobaczyć, co sudo geditsię zmieniło, uruchom find ~ -user root -group rooti zobacz, co zostało zwrócone. Domyślnie nie powinno to być niczym.

Dzięki temu poleceniu możesz zobaczyć kilka plików należących do roota. Jeden byłby nowym .file, .gvfsa wcześniej czy później rootem ~/.cache/dconfi wyżej wymienionym recently-used.xbel.

Więc żadne „niebo nie zawodzi”, ale nadal. Teraz pojawiły się raporty, że dalsze używanie powoduje inne problemy, ale nie będzie rościło sobie prawa do tego, czego tu nie widzę.

Zauważ też, że od 13.10 a sudo geditbędzie używać konfiguracji gedit użytkownika, a nie konfiguracji gedit użytkownika root. Znów po prostu zła praktyka, więc po co dalej to robić lub sugerować, że robią to inni?

doug
źródło
1
Czasami korzystam teraz z okazji, aby pokazać użytkownikom, jak korzystać z nano, ponieważ jest to łatwe i większość czasu może zastąpić gedit. Są jednak przypadki, w których gedit jest lepszy niż nano nawet dla tych, którzy wiedzą, jak go używać. Również sudo gedit może prowadzić do sudo nautilus, co prawdopodobnie jest gorsze .. (Tutaj mam gedit z włączoną pkexec, ale to jest poza zakresem tej dyskusji
doug
@wjandrea, brzmi dobrze, zredagowane
doug
12

Cóż, może to fantazja, ale wiele osób mówi to samo:

  • Dlaczego powinienem używać gksudo dla aplikacji Gtk zamiast sudo?

    Są jednak inne czasy, kiedy skutki uboczne mogą być tak łagodne, jak rozszerzenia przeglądarki Firefox nie przylegają lub tak ekstremalne, jak niemożność zalogowania się, ponieważ uprawnienia do .ICEauthority uległy zmianie.

  • Dlaczego użytkownicy nigdy nie powinni używać normalnego sudo do uruchamiania aplikacji graficznych?

    Załóżmy, że używasz gedit (graficzny edytor tekstu) jako root. Jeśli uruchomisz sudo gedit, HOME nadal będzie wskazywać na twój katalog domowy, nawet jeśli program działa jako root. W związku z tym gedit zapisze pliki konfiguracyjne jako root w twoim katalogu domowym. Czasami spowoduje to, że pliki konfiguracyjne będą własnością root, a przez to będą niedostępne dla ciebie (kiedy później uruchomisz program jako ty, a nie jako root).

  • Jak uruchomić program GUI jako inny użytkownik (Debian)?

    Po pierwsze, nie używaj sudo ani su do zmieniania użytkowników w celu uruchomienia procesu graficznego, ponieważ możesz mieć problemy w dalszej kolejności (~ / .ICEautoryzacja zmieniająca właściciela to znaczący problem). Zamiast tego utwórz skrót, który używa następującego polecenia:

  • Uruchamianie Sudo graficznie

    Cóż, szczerze mówiąc, w większości przypadków tak nie jest. W przypadku wielu aplikacji możesz uruchomić je w niewłaściwy sposób - używając sudo do aplikacji graficznych i nie zauważając żadnych niepożądanych efektów ubocznych.

    ...

    Te błędy występują, ponieważ czasami podczas sudouruchamiania aplikacji uruchamia się z uprawnieniami administratora, ale korzysta z pliku konfiguracyjnego użytkownika.

    To archiwum poczty może Cię również zainteresować.

Przetestujmy to.

2 nowe wirtualne pudełka. Ubuntu 14.04. Nigdy nie uruchamiaj na nich firefox. Co się stanie, gdy uruchomię polecenie sudo firefox?

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

...

[email protected]:2192:13

Jest to to samo (lub przynajmniej bardzo podobne) dla obu wirtualnych urządzeń. Podczas działania firefoxa zainstalowałem rozszerzenie youtube - polecane. Następnie zamknąłem firefoxa i sprawdziłem wyjście.

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

Cóż, w .ICEauthorityporządku! Jednak...

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 rzeczy w moim katalogu domowym ( /home/tim/) są root ( .., .dbusi .mozilla). Jest to to samo (lub przynajmniej bardzo podobne) dla obu wirtualnych urządzeń.

Czy to ma znaczenie. Nie byłem pewien, więc uruchomiłem firefoxa w następujący sposób:

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.

I ten brzydki błąd:

wprowadź opis zdjęcia tutaj

Aby uzyskać pełne dane wyjściowe na terminalu (w tym bełkot firefox), zobacz te dwie pastebiny, tutaj i tutaj .

Nawiasem mówiąc, nadal mogę uruchomić Firefoxa jako root. Ale teraz więcej plików zostało zmienionych:

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

Czy to dlatego, że przesłałem zdjęcie na imgur.com? Niepewny.

Jak to naprawiłem? chown. Nie rozumiem tego, ale internet kazał to zrobić, a to wirtualne pudełko, więc yolo.

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

I to naprawiło. Teraz dane wyjściowe to tylko ..plik:

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

Tak samo jest na moim komputerze. Aha, i na mojej wirtualnej skrzynce Kubuntu:

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

Na którym nigdy nawet nie uruchomiłem polecenia sudo. Więc wszystko jest dobrze. Po prostu nie uruchamiaj sudoaplikacji GUI.

Test końcowy: uruchom go z -Ha -iflagi:

sudo -H firefox

i

sudo -i firefox

I dobre wieści! Jednak jedyną „rzeczą” roota jest ... I mogę uruchomić firefoxbez rootowania.


OP chce, żebym mówił o Gedicie.

Pobiegłem

sudo gedit

Następnie zainstalowałem losowe wtyczki. To był wynik:

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

Pamiętaj, że nie mogę nawet wyświetlić własności, .gvfswięc zrobiłem to:

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

Tak więc uruchamianie sudo geditzmienia plik w moim katalogu domowym na root.

Nadal mogę otworzyć gedit, ale tym razem wyrzucam śmieci:

(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.

To sugeruje, że istnieje inny plik ( ~.local/share/recently-used.xbel), który został zmieniony. Myślę, że jest to ostatnio używana lista plików i (zgaduję, że nie mam już mojej listy ostatnio używanych plików)

Powinien tam być plik o nazwie output2.txt.save2. Moje zaimki to On / On

Tim
źródło
1
Napisałeś wszystko oprócz odpowiedzi na pytanie. Po prostu daj przypadek testowy z gedit. Czy powinienem oflagować jako „nie odpowiedź”? Lub „bardzo zła jakość”, choć długa?)))
Pilot6
5
@ Pilot6 - w pytaniu Can anyone give an example how to prove it ..... Can anyone give a real example?- i to prowadzi do przeszłych rzeczy i podaje przykład tego, co może się stać z firefoxem jako rootem - czy powinienem oflagować twój komentarz „nie konstruktywny”, ponieważ nie mogę znaleźć „dziwnie zrzędliwego”? bądź miły cmon :)
Wilf
1
Och, proszę, nie używaj, ls -la|grep rootale albo find . -uid 0albofind . -user root
solsTiCe
1
@ Pilot6 w porządku, edytowałem, aby dodać kilka rzeczy o gedit. Nie sądzę, żeby coś to dodawało do mojej odpowiedzi, ale wydaje się, że tak chcesz ...
Tim
4
Zarówno cytaty, jak i szczegółowe przykłady sprawiają, że jest to bardzo przydatne! Cieszę się, że dodałeś Gedit, ale zgadzam się z @Wilf, że było dobrze nawet wcześniej. To nie jest jedynie gedit przykłady I (celowo) nie należą tam . Jeśli ludzie chcą, mogę dodać krótką notatkę tam o „czasami”, ale naprawdę myślę, że to pytanie jest oddzielna i mam głosowali ponownie otworzyć . Jeśli będziemy ponownie otworzyć tego, spróbuję i dodać kolejną odpowiedź ze szczegółowymi informacjami Gedit, ale to nadal będzie najbardziej przydatna odpowiedź dla większości ludzi.
Eliah Kagan,