Przeczytałem dokumentację wspólnotową „RootSudo” i jestem zainteresowany tą linią:
Nigdy nie powinieneś używać normalnego sudo do uruchamiania aplikacji graficznych jako root.
Dlaczego? Jaka jest różnica? Proszę podać proste wyjaśnienie, ponieważ jestem zwykłym użytkownikiem pulpitu.
Odpowiedzi:
Aplikacje graficzne często przechowują ustawienia i inne dane specyficzne dla użytkownika w plikach konfiguracyjnych zapisanych w folderze domowym użytkownika . Głównym mechanizmem używanym przez aplikacje do określania, czego powinny używać jako folderu domowego użytkownika, jest
HOME
zmienna środowiskowa . (Możesz to sprawdzić samodzielnieecho $HOME
).Załóżmy, że korzystasz
gedit
(graficzny edytor tekstu) jakoroot
. Po uruchomieniusudo gedit
,HOME
będzie w dalszym ciągu wskazują ku swoim katalogu domowym, mimo że program jest uruchomiony jakoroot
. W związku z tymgedit
zapisze pliki konfiguracyjne jakroot
w katalogu domowym. To czasami prowadzić w plikach konfiguracyjnych są posiadanych przezroot
a więc niedostępne dla ciebie (jeśli później uruchomić program jak siebie samego, a nieroot
). Dzieje się tak głównie wtedy, gdy aplikacja musi utworzyć nowy plik konfiguracyjny. Nowo utworzone pliki są domyślnie własnością użytkownika, który je tworzy (którym w tym przypadkuroot
nie jest użytkownik).To jest główny powód, dla którego powinieneś uruchamiać aplikacje graficzne z graficznym
sudo
frontendem, a nie z prostymsudo
. W Ubuntu i większości jego pochodnych (w tym Xubuntu i Lubuntu) standardową graficzną nakładką jestgksu
/gksudo
. W Kubuntu tak jestkdesudo
. (Zależy to od używanego środowiska pulpitu ).Jeśli chcesz
sudo
bezpośrednio używać aplikacji graficznejgedit
, możesz uruchomić:-H
Flag sprawiasudo
zestawHOME
aby wskazywałroot
„s folderu domowego (co jest/root
).To wciąż nie obsłuży automatycznie własności
.Xauthority
poprzez skopiowanie go do folderu tymczasowego (tosudo
kolejna rzecz, którą zajmują się tobą nakładki graficzne ). Ale w rzadkich przypadkach, które.Xauthority
są niedostępne, pojawi się błąd, mówiąc, że tak jest, a następnie możesz naprawić problem, usuwając go (sudo rm ~/.Xauthority
), ponieważ jest on automatycznie regenerowany. Zatem ochrona.Xauthority
własności i uprawnień jest mniej ważna niż ochrona własności i uprawnień plików konfiguracyjnych.W przeciwieństwie do
root
-owned.Xauthority
, gdy pliki konfiguracyjne stać własnością jakoroot
, że nie zawsze jest tak oczywiste, na czym polega problem (ponieważ programy graficzne często biegać, ale nie działa bardzo dobrze, a wyjście żadnych użytecznych błędy konsoli). Czasami jest to większy problem do rozwiązania, zwłaszcza jeśli znajdujesz się w sytuacji, gdy chcesz, aby jeden lub więcej plików w katalogu domowym było własnością kogoś innego niż Ty (ponieważ wtedy nie możesz tego naprawić po prostu rekurencyjnie,chown
zapisując wszystkie swoje pliki powrót do siebie).Dlatego
sudo
(przynajmniej bez-H
) nie należy używać do uruchamiania aplikacji graficznej, chyba że dobrze znasz wewnętrzne działanie aplikacji i masz pewność, że nigdy nie próbuje ona pisać żadnych plików konfiguracyjnych.źródło
sudo chmod -R $USER:$USER ~
Niestety, te kryteria nie zawsze mają zastosowanie. Jeśli masz jakieś pliki, w których musisz zachować właściciela grupy, możesz uruchomićsudo chmod -R $USER ~
. To zwykle wystarcza. (Jeśli masz pliki, które muszą być własnością innego użytkownika w twoim katalogu domowym, nawet to będzie stanowić problem).chmod
faktycznie to robi? Zawsze myślałem, że to właśniechown
to zrobiło.chmod
nigdy mi tego nie zrobił.chown
zamiastchmod
w moich komentarzach powyżej. Przepraszam za to - i dziękuję za zwrócenie na to uwagi!sudo -H echo $HOME
Twój shell - działa jak ty, nie jako root - wykonuje ekspansję parametru na$HOME
, uzyskanie ścieżkę swoim katalogu domowym, a następnie przechodzi do, żesudo
, który z kolei przekazuje już rozszerzoną wartośćecho
, która drukuje go.sudo -H printenv HOME
,sudo -H bash -c 'echo $HOME'
isudo -H sh -c 'echo $HOME'
wszystkie drukowane/root
. Jest to koncepcyjnie podobne - choć za pomocą innego mechanizmu - do sposobu, w jakix=a echo "$x"
nie drukujea
(chyba że max
już wartośća
).Po prostu:
Przeczytaj tutaj . Ponadto, być może duplikat Jaka jest różnica między „gksudo nautilus” i „sudo nautilus”?
źródło
Alternatywą
gksu nautilus
igksu gedit
jest użycienautilus-admin
dodatku. Pozwala przeglądać pliki i katalogi za pomocą Nautilus, a następnie otwierać je jako root (Administrator).Instalacja jest prosta:
Teraz, gdy jesteś w nautilusie, będziesz mieć dodatkową opcję edycji jako administrator:
gedit
ponieważ root nie zezwala na preferencjePodczas uruchamiania
gedit
jako root nie możesz używać preferencji, które ustawiłeś jako zwykły użytkownik dla tabulatorów, konwertowania tabulatorów na spacje, nazwę czcionki, rozmiar czcionki, zawijanie wiersza itp.Aby rozwiązać ten problem, napisałem skrypt
sgedit
do dziedziczenia preferencji użytkownika i zastosowania ich do katalogu głównego: Jak mogę zsynchronizować mój katalog główny z preferencjami mojego użytkownika?sgedit filename1 filename2 ...
sudo -H
aby zachować własność pliku, jednocześnie uzyskując uprawnienia roota.sudo
upłynął limit czasu ostatniego .gedit
jako zadanie w tle, dzięki czemu monit terminalu natychmiast się pojawia.źródło