Potrzebuję odpowiednika gksu w 18.04

23

Przeczytałem wiele wątków na temat usuwania gksu z wielu wersji Linuksa, w tym z Ubuntu 18.04. Wiele osób twierdzi, że gksu jest obrzydliwością i żaden użytkownik nigdy nie powinien używać czegoś takiego. Mam 2 przykłady, w których, o ile wiem, muszę mieć coś, co pozwala mi działać jako root (nie tylko do edycji plików).

Po pierwsze, muszę uruchomić mysql dopiero po otwarciu zaszyfrowanego folderu w poleceniu (GUI). Oznacza to uruchomienie skryptu przez system szyfrujący, który uruchamia usługę mysql. To musi być zrobione jako root, więc używam gksu w tym skrypcie startowym, który prosi mnie o hasło. Jak inaczej mogę uruchomić usługę z systemu GUI?

Kopie zapasowe systemu Ubuntu uruchamiam również jako root, w przeciwnym razie nie można wykonać kopii zapasowej wielu plików systemowych. Tak więc plik na pulpicie używa gksu do rozpoczęcia tworzenia kopii zapasowej.

pkexec wygląda na skomplikowany i wymaga plików zasad. Czy to jedyna alternatywa, a jeśli tak, to dlaczego jest bezpieczniejsza?

Inne odpowiedzi na podobne pytania nie wydają się odnosić do indywidualnych problemów, które ludzie mają teraz, gdy gksu już nie ma (lub trudniej znaleźć ...). Myślę, że takie pytania użytkowników niebędących ekspertami skorzystałyby na bardziej szczegółowych odpowiedziach. Teraz mam kilka, więc chciałbym odpowiedzieć na moje własne pytanie.

pastim
źródło
Czy pkexecdziała dla ciebie zamiast gksu?
Thomas Ward
@karel zgodził się, chociaż w tym poście nie jest wyraźnie napisane, że „zamiennik” to pkexec. (musisz na to polować)
Thomas Ward
2
Możesz także spróbować użyć, sudo -H GUI-programa jeśli Wayland zawiera ten link, który może być przydatny ... istnieją obejścia, jeśli masz narzędzie GUI, które działa dobrze dla Ciebie i wymaga podwyższonych uprawnień.
sudodus
3
Jest to kontrowersyjny temat, ale w pigułce uruchamianie aplikacji graficznych, ponieważ root jest zagrożeniem dla bezpieczeństwa. Chociaż ty i wiele innych osób możecie się z tym nie zgodzić, uruchamianie aplikacji graficznych, ponieważ rootowanie jest zniechęcane przez Ubuntu i wiele dystrybucji. Ubuntu jest w trakcie pisania alternatywnych rozwiązań, pkexec i innych polityk. Możesz złożyć raport o błędzie, a programiści będą pracować nad rozwiązaniem dla programów, które ich zdaniem powinny to robić, np. Menedżerów pakietów. Jest to złożone, ponieważ dotyczy X i Waylanda. Alternatywnie używaj aplikacji innych niż graficzne lub pisz własne. Szyfrowanie nie wymaga przewodnika
Panther
Używam gnome-encfs-manager, który zapewnia GUI do montowania zaszyfrowanych folderów. Umożliwia uruchomienie skryptu po zamontowaniu napędu. W tym skrypcie muszę uruchomić mysql. Jak inaczej mogę to zrobić? Jeśli chodzi o wayland, niedopuszczenie do korzystania z GUI synaptycznych lub dwuczęściowych jest absurdalne z punktu widzenia zwykłego użytkownika domowego pulpitu. Są nieocenione. Systemy mogą być tak bezpieczne, że nikt nie chce ich używać - istnieje równowaga, aw tym szczególnym przypadku (droga) użytkownik musi mieć rację.
pastim

Odpowiedzi:

8

Wiem, że podobno istnieją odpowiedzi na to pytanie gdzie indziej, ale nie znalazłem żadnej z nich wystarczająco jasnej i prostej, aby rozwiązać ten problem. Więc przekopałem się w wielu miejscach i wymyśliłem to. Nadal nie rozumiem, dlaczego społeczność Linuksa postanowiła utrudnić nam życie zwykłym użytkownikom komputerów stacjonarnych (próbowałem zrozumieć wiele wyjaśnień), ale takie jest życie. Używam GUI do wszystkiego, używając okna terminala tylko w razie potrzeby. O ile wiem, rozwiązania korzystające z opcji sudo nie pomagają w tym. Mam więc .desktoppliki i skrypty, które wykonują wszystkie zadania, z których regularnie korzystam.

Istnieją dwa podstawowe rozwiązania.

1. Zainstaluj ponownie gksu

To rozwiązanie może, ale nie musi trwać. Technicy anty-gksu mogą znaleźć sposób, aby to zatrzymać. Tymczasem pobierz 2 .debpliki z libgksu (x64) i gksu (x64) . Zainstaluj libgksu2, a następnie gksu za pomocą gdebi lub innego narzędzia instalacyjnego, którego chcesz użyć. To zadziałało dla mnie.

2. Użyj pkexec

Jako (mam nadzieję) długoterminowe rozwiązanie udało mi się przekonać pkexec do pracy z potrzebnymi narzędziami.

  1. Aby uruchomić usługę ze skryptu. Okazuje się, że ani gksu, ani pkexec nie są potrzebne. Tylko start service xyzi poprosi o podanie hasła.

  2. Aby edytować pliki root lub otworzyć nautilus jako root, zobacz Jak uruchomić Gedit i Nautilus jako root z pkexec zamiast z gksu - Web Upd8 . Zapewnia to dwa pliki „polkit” dla pkexec, które pozwalają na użycie skryptu zawierającego pkexec geditdo edycji pliku głównego i podobnie dla nautilus. Wszystkie instrukcje znajdują się na tej stronie internetowej. Teraz używam „filemanager-action” do zapewnienia akcji prawym przyciskiem myszy, aby uruchomić gedit lub nautilus jako root.

  3. Uruchamiam deja-dup jako root do tworzenia kopii zapasowych systemu podstawowego. Robię to rzadko, z wyjątkiem /home( /homeponieważ często wykonuję kopie zapasowe, które nie wymagają dostępu do konta root). Aby to zadziałało, wziąłem kopię pliku używanego w kroku 2 dla gedit i edytowałem go dla deja-dup. Naprawdę nie rozumiem zawartości, ale działa, zarówno w przypadku kopii zapasowych, jak i przywracania plików, używając pkexec backupskryptu zainicjowanego z pliku .desktop. Dodałem ten nowy plik do /usr/share/polkit-1/actions:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD polkit Policy Configuration 1.0//EN" "http://www.freedesktop.org/software/polkit/policyconfig-1.dtd">
    
    <policyconfig>
      <icon_name>deja-dup</icon_name>
    
      <action id="org.gnome.DejaDup">
        <description gettext-domain="deja-dup">Backup</description>
        <message gettext-domain="deja-dup">Privileges are required to backup system files</message>
        <defaults>
        <allow_any>no</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>auth_admin</allow_active>
         </defaults>
        <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/deja-dup</annotate>
        <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
      </action>
    
    </policyconfig>
    

    Zauważ, że w tym katalogu znajduje się inny plik deja-dup, który twierdzi, że pomaga w przywracaniu plików, ale nie udało mi się go uruchomić. Ten nowy plik musi mieć unikalną nazwę, na przykład org.gnome.DejaDupNew.policy.

Na razie działam bez gksu. Spróbuję kontynuować…

pastim
źródło
Polecenie rozpoczęcia tworzenia kopii zapasowej było pkexec deja-dupdla mnie po dodaniu pliku zgodnie z opisem. Okno dialogowe pozwala mi najpierw wybrać ustawienia, co jest świetne.
wbloos
Wstawienie pliku zasad /usr/share/polkit-1/actionsbyło rzeczywiście sposobem na uruchomienie programu uruchamiającego pulpit z podwyższonymi pkexecuprawnieniami. Oto inny przykład .
Serge Stroobandt
4

Nautilus Admin ( nautilus-admin ) to proste rozszerzenie Pythona dla menedżera plików Nautilus, które dodaje pewne czynności administracyjne do menu po kliknięciu prawym przyciskiem myszy:

  • Otwórz jako administrator: otwiera folder w nowym oknie Nautilus z uprawnieniami administratora (root).
  • Edytuj jako administrator: otwiera plik w oknie Gedit z uprawnieniami administratora (root).

Aby zainstalować Nautilus Admin we wszystkich obecnie obsługiwanych wersjach Ubuntu, otwórz terminal i wpisz:

sudo apt install nautilus-admin

Testowałem wszystkie alternatywy dla gksu w 18.04 dla innych aplikacji oprócz Files i Gedit, a ta, która wydaje się działać najbardziej konsekwentnie, to:

sudo -H nazwa aplikacji &> / dev / null

pkexecjest najlepszym zamiennikiem gksu, gdy działa, ponieważ zapewnia większe bezpieczeństwo, ale jest bardzo niespójny w różnych aplikacjach (na przykład nie działa z Gedit) i może powodować awarie niektórych aplikacji. sudo -ijest niepotrzebnie trudny w zarządzaniu, ponieważ podnosi Twoje uprawnienia do rootowania przez dłuższy czas, gdy potrzebujesz tylko roota, aby uruchomić jedno polecenie.

Karel
źródło
3

Używam skryptu o nazwie, sgeditktóry dziedziczy preferencje użytkownika dotyczące czcionek, kart i rozszerzeń. Używa sudo -H geditzamiast gksu geditdla stabilności w środowisku GUI. Wyświetla monit o podanie hasła.

Mają sudodziedziczyć swoje konto użytkownika geditustawienia

sgedit 80 kolumna prawa slider.gif

W tym przykładzie ustawienia użytkownika dla nazwy czcionki, rozmiaru czcionki, tabulatorów, konwersji tabulatorów na spacje, podświetlenia kolumn 80 i suwaka miniatur po prawej stronie zostały odziedziczone przez sudo.

Zwykle sudo -H geditnie można tworzyć ani zapisywać tych ustawień konfiguracji. W skrypcie poniżej sgeditustawienia są dziedziczone z konta użytkownika.

Ten skrypt rozwiązuje również problemy związane z problemami „ gksujest zły i domyślnie nie zainstalowany” oraz „ pkexectrudno jest go skonfigurować”.


tło

Ten sam problem od lat mnie dręczy. W ten weekend projekt polegał na napisaniu sgeditscenariusza:

  • Zadzwoń za pomocą sgedit filename1 filename2...
  • Pobiera ustawienia gedit użytkownika dla tabulatorów, czcionek, zawijania linii itp.
  • Podnosi się, sudo -Haby zachować własność pliku, jednocześnie uzyskując uprawnienia roota.
  • Żąda hasła, jeśli upłynął limit czasu ostatniego sudo.
  • Pobiera ustawienia gedit sudo
  • Porównuje różnice między ustawieniami użytkownika i sudo gedit
  • Działa tylko gsettings setna różnicach (redukuje 174 setpoleceń do kilkunastu lub mniej. Następnym razem jest uruchamiany może tylko jedna lub dwie zmiany, ale często nie ma żadnej.
  • Wywołuje gedit jako zadanie w tle, dzięki czemu natychmiast pojawia się monit terminala.

Skrypt Bash sgedit

#!/bin/bash

# NAME: sgedit
# PATH: /mnt/e/bin
# DESC: Run gedit as sudo using $USER preferences
# DATE: June 17, 2018.

# Must not prefix with sudo when calling script
if [[ $(id -u) == 0 ]]; then
    zenity --error --text "You cannot call this script using sudo. Aborting."
    exit 99
fi

# Get user preferences before elevating to sudo
gsettings list-recursively | grep -i gedit | grep -v history |
    grep -v docinfo |
    grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings

sudoFunc () {
    # Must be running as sudo
    if [[ $(id -u) != 0 ]]; then
        zenity --error --text "Sudo password authentication failed. Aborting."
        exit 99
    fi

    # Get sudo's gedit preferences
    gsettings list-recursively | grep -i gedit | grep -v history |
        grep -v docinfo |
        grep -v virtual-root | grep -v state.window > /tmp/gedit.gsettings.root
    diff /tmp/gedit.gsettings.root /tmp/gedit.gsettings | grep '>' > /tmp/gedit.gsettings.diff
    sed -i 's/>/gsettings set/g; s/uint32 //g' /tmp/gedit.gsettings.diff
    chmod +x /tmp/gedit.gsettings.diff
    bash -x /tmp/gedit.gsettings.diff  # Display override setting to terminal
    nohup gedit $@ &>/dev/null &
}

FUNC=$(declare -f sudoFunc)
sudo -H bash -c "$FUNC; sudoFunc $*;"

Gospodarowanie

Skopiuj powyższy skrypt bash do nowego pliku o nazwie sgedit. Zalecam umieszczenie go w $HOME/binkatalogu, tj/home/YOURNAME/bin . Najpierw może być konieczne utworzenie katalogu.

Oznacz plik jako wykonywalny, używając:

chmod a+x ~/sgedit

Uwaga ~to skrót do /home/YOURNAME.

WinEunuuchs2Unix
źródło
0

Ubuntu 18.04: Niektóre programy instalacyjne, a inne wymagają gksudo lub gksu, aby były dostępne pod tą samą nazwą. Aby te działały:

Zainstaluj wersję gnome ssh-askpass. Bez tego okno dialogowe hasła może być ukryte za innym oknem:

sudo apt-get install ssh-askpass-gnome

Utwórz nowy plik my-gksudo.sh:

sudo -H gedit /etc/profile.d/my-gksudo.sh

zawartość pliku:

export SUDO_ASKPASS=/usr/bin/ssh-askpass

Utwórz nowe pliki gksudo i gksu o identycznej zawartości:

sudo -H gedit /usr/bin/gksudo

i

sudo -H gedit /usr/bin/gksu

zawartość pliku dla obu:

sudo -A $@

Uczyń gksudo i gksu wykonywalnym:

sudo chmod +x /usr/bin/gksudo

I

sudo chmod +x /usr/bin/gksu

Uruchom ponownie komputer.

Pekka Lehtikoski
źródło