gksu (do) ma także własną konfigurację zmiennych środowiskowych, które mają być przekazywane do dziecka, niezależnie od własnych su (do). Na przykład, jeśli twoja konfiguracja sudoers określa! Keep_env, brak $ DISPLAY może uniemożliwić uruchomienie aplikacji graficznych, ale gksudo powinno działać. Szczegółowe informacje można znaleźć na stronie git.debian.org/?p=users/kov/gksu-polkit.git;a=blob;f=common/… lub live.gnome.org/gksu .
ephemient
@ephemient Więc oprócz graficznego monitu, jest sudo -Erównoważne z gksudo?
Chcę podkreślić, że wcale nie jest to zasadnicza różnica, a odpowiedź ta jest dość myląca dla początkujących. Główna różnica została wyjaśniona tutaj: askubuntu.com/a/11766/81034, a poniższa odpowiedź (z którą łączy się @johnywhy) wykracza poza to, aby dodać trochę niuansów. Proszę przeczytać pytanie askubuntu zamiast polegać na tej wprowadzającej w błąd odpowiedzi.
Sundar - Przywróć Monikę
31
gksudoJest to nakładka GTK oparte na sudo(BTW, kdesudojest nakładka Qt bazie), jednak jest (domyślnie) uchwyty bardziej zmienne środowiskowe ( HOME, XAUTHORITYetc.) niż sudoczyniąc uruchomione polecenia jako root bezpieczniejsze.
O ile widzę tylko odpowiedź @Logics jest wystarczająco poprawna (@Ignacio Vazquez-Abrams nie jest kompletna). Oto próba uniknięcia wyjaśnienia odpowiedzi / komentarzy @Davros @knitti (prosimy o ich usunięcie / edycję, gdy nie jest to potrzebne):
Chociaż oba polecenia są w rzeczywistości reprezentowane sudo, użyty interfejs użytkownika NIE jest jedyną różnicą między tymi dwoma poleceniami.
Uruchomienie programu GUI NIE jest jedyną sytuacją, w której powinieneś użyć gk / kdesudo, zamiast tego powinieneś używać gk / kdesudo, gdy nie możesz ustalić, czy polecenie utworzy / zapisze pliki w twoim katalogu domowym (na które HOMEwskazuje zmienna środowiskowa w sudopolecenia w niektórych systemach i sytuacjach). Nie wszystkie aplikacje GUI zapisują do twojego katalogu domowego i nie wszystkie aplikacje CLI tego nie robią , więc typ polecenia nie jest kluczowy.
Państwo nadal można używać sudopolecenia do aplikacji GUI uruchomienie jako root (do wyświetlania wyjścia konsoli aplikacjom jako przykład), jednak trzeba obsłużyć HOME(i inne, takie jak XAUTHORITY, DISPLAY, wprowdzanie związanej-stuff, etc.) Zmienne środowiskowe prawidłowo, tak że uruchomiona aplikacja nie zawiedzie, nie straci funkcjonalności ani nie zrobi naprawdę złych rzeczy. Oto moje aktualne zalecenie dotyczące używaniasudo
sudo -H <rest of the command>
(od sudostrony podręcznika sekcji 8) -H ( HOME )Opcja żąda, aby polityka bezpieczeństwa ustawiłaHOME zmienną środowiskową na katalog osobisty użytkownika docelowego (domyślnie root) zgodnie z bazą danych haseł. W zależności od zasad może to być zachowanie domyślne.
Powinno to przynajmniej zapobiec tworzeniu plików w sudokatalogu osobistym dzwoniącego
sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
Powinno to pozwolić <programowi GUI> wykonać się w terminalu TTY i wyświetlić go w środowisku pulpitu
Zachowanie sudopolecenia nie jest identyczne we wszystkich systemach i można je skonfigurować za pomocą visudopolecenia, sprawdź stronę sudoers(5)podręcznika, aby uzyskać więcej informacji.
wydaje się znacznie lepszym wyjaśnieniem niż to, które zdobywa wszystkie głosy. dokładniejszy, bardziej poprawny. nawet OP odpowiedział „czy to wszystko?” na odpowiedź, która uzyskała wszystkie głosy.
Johnny, dlaczego
2
Używanie zwykłego sudo do uruchamiania programów graficznych w rzadkich przypadkach zepsuje uprawnienia do niektórych plików. Aby być bezpiecznym, należy używać gksudo (lub odpowiednio kdesudo) do uruchamiania programów z GUI. Myślę, że to naprawdę błąd, chociaż słyszałem wyjaśnienia, że gksudo rozumie zmienne serwera X, a sudo prawdopodobnie nie prowadzi do problemów. Tak jak wskazówka; jeśli uruchamiasz programy graficzne jako root, zamiast otwierać jeden terminal dla każdego programu, który chcesz uruchomić, wpisz ALT-F2 (jednocześnie alt i klawisz funkcyjny 2), a następnie wpisz w wyskakującym oknie dialogowym „gksudo” program ”bez cudzysłowów i program zastąpiony przez aplikację, którą chcesz uruchomić.
sudo działa jako bieżący użytkownik z podwyższonymi uprawnieniami. Może to potencjalnie zmienić uprawnienia do plików niektórych plików konfiguracyjnych użytkownika (związanych ze środowiskiem graficznym) podczas uruchamiania aplikacji graficznych. Mogą wystąpić błędy występujące podczas ponownego uruchamiania tych aplikacji bez sudo.
gksudo (kdesudo pod KDE) uruchamia aplikacje jako użytkownik root, więc wszelkie uprawnienia do plików dotyczą plików użytkownika root, a nie plików użytkowników. ponowne uruchomienie tych aplikacji bez gksudo / kdesudo zawsze będzie miało oczekiwane zachowanie.
„Nigdy nie powinieneś używać normalnego sudo do uruchamiania aplikacji graficznych jako root. Powinieneś używać gksudo (kdesudo na Kubuntu) do uruchamiania takich programów. Gksudo ustawia HOME = ~ root i kopiuje .Xauthority do katalogu tmp. Zapobiega to plikom w twoim domu katalog staje się własnością root. (AFAICT, to wszystko, co jest szczególne w środowisku uruchomionego procesu z gksudo vs. sudo). ”
Istnieją cztery inne odpowiedzi; który jest niepoprawny? Czy twoja odpowiedź nie jest zasadniczo taka sama jak odpowiedź Davrosa?
fixer1234
Miałem na myśli odpowiedź oznaczoną jako poprawną. Tak, Davros mówi to samo, ale dodałem to, ponieważ jego nie zawierało linku do źródła.
eugene1832
1
Lepszym rozwiązaniem byłoby zaproponowanie edycji tej odpowiedzi. Poprawa odpowiedzi prawdopodobnie zostanie zaakceptowana (+2 powtórzenia), podczas gdy zasadniczo powielenie odpowiedzi może przyciągnąć głosy negatywne.
Odpowiedzi:
sudo
prosi ogksudo
podanie hasła w wierszu poleceń i wyświetla okno dialogowe.źródło
sudo -E
równoważne zgksudo
?gksudo
Jest to nakładka GTK oparte nasudo
(BTW,kdesudo
jest nakładka Qt bazie), jednak jest (domyślnie) uchwyty bardziej zmienne środowiskowe (HOME
,XAUTHORITY
etc.) niżsudo
czyniąc uruchomione polecenia jako root bezpieczniejsze.O ile widzę tylko odpowiedź @Logics jest wystarczająco poprawna (@Ignacio Vazquez-Abrams nie jest kompletna). Oto próba uniknięcia wyjaśnienia odpowiedzi / komentarzy @Davros @knitti (prosimy o ich usunięcie / edycję, gdy nie jest to potrzebne):
sudo
, użyty interfejs użytkownika NIE jest jedyną różnicą między tymi dwoma poleceniami.HOME
wskazuje zmienna środowiskowa wsudo
polecenia w niektórych systemach i sytuacjach). Nie wszystkie aplikacje GUI zapisują do twojego katalogu domowego i nie wszystkie aplikacje CLI tego nie robią , więc typ polecenia nie jest kluczowy.sudo
polecenia do aplikacji GUI uruchomienie jako root (do wyświetlania wyjścia konsoli aplikacjom jako przykład), jednak trzeba obsłużyćHOME
(i inne, takie jakXAUTHORITY
,DISPLAY
, wprowdzanie związanej-stuff, etc.) Zmienne środowiskowe prawidłowo, tak że uruchomiona aplikacja nie zawiedzie, nie straci funkcjonalności ani nie zrobi naprawdę złych rzeczy. Oto moje aktualne zalecenie dotyczące używaniasudo
sudo -H <rest of the command>
sudo
strony podręcznika sekcji 8)-H ( HOME )
Opcja żąda, aby polityka bezpieczeństwa ustawiłaHOME
zmienną środowiskową na katalog osobisty użytkownika docelowego (domyślnie root) zgodnie z bazą danych haseł. W zależności od zasad może to być zachowanie domyślne.sudo
katalogu osobistym dzwoniącegosudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
sudo
polecenia nie jest identyczne we wszystkich systemach i można je skonfigurować za pomocąvisudo
polecenia, sprawdź stronęsudoers(5)
podręcznika, aby uzyskać więcej informacji.źródło
Używanie zwykłego sudo do uruchamiania programów graficznych w rzadkich przypadkach zepsuje uprawnienia do niektórych plików. Aby być bezpiecznym, należy używać gksudo (lub odpowiednio kdesudo) do uruchamiania programów z GUI. Myślę, że to naprawdę błąd, chociaż słyszałem wyjaśnienia, że gksudo rozumie zmienne serwera X, a sudo prawdopodobnie nie prowadzi do problemów. Tak jak wskazówka; jeśli uruchamiasz programy graficzne jako root, zamiast otwierać jeden terminal dla każdego programu, który chcesz uruchomić, wpisz ALT-F2 (jednocześnie alt i klawisz funkcyjny 2), a następnie wpisz w wyskakującym oknie dialogowym „gksudo” program ”bez cudzysłowów i program zastąpiony przez aplikację, którą chcesz uruchomić.
źródło
sudo działa jako bieżący użytkownik z podwyższonymi uprawnieniami. Może to potencjalnie zmienić uprawnienia do plików niektórych plików konfiguracyjnych użytkownika (związanych ze środowiskiem graficznym) podczas uruchamiania aplikacji graficznych. Mogą wystąpić błędy występujące podczas ponownego uruchamiania tych aplikacji bez sudo.
gksudo (kdesudo pod KDE) uruchamia aplikacje jako użytkownik root, więc wszelkie uprawnienia do plików dotyczą plików użytkownika root, a nie plików użytkowników. ponowne uruchomienie tych aplikacji bez gksudo / kdesudo zawsze będzie miało oczekiwane zachowanie.
źródło
Aktualna odpowiedź jest niepoprawna. Według wiki Ubuntu RootSudo :
„Nigdy nie powinieneś używać normalnego sudo do uruchamiania aplikacji graficznych jako root. Powinieneś używać gksudo (kdesudo na Kubuntu) do uruchamiania takich programów. Gksudo ustawia HOME = ~ root i kopiuje .Xauthority do katalogu tmp. Zapobiega to plikom w twoim domu katalog staje się własnością root. (AFAICT, to wszystko, co jest szczególne w środowisku uruchomionego procesu z gksudo vs. sudo). ”
źródło