Rozwiązania
W Wayland często trudno jest uruchamiać aplikacje GUI z podwyższonymi uprawnieniami (sudo -H, gksu ...). Dobrym pomysłem jest wykonywanie takich zadań za pomocą narzędzi wiersza poleceń.
Istnieją jednak obejścia, jeśli masz narzędzie GUI, które działa dobrze i wymaga podwyższonych uprawnień. (Używam dwóch takich standardowych narzędzi: Synaptic Package Manager synaptic
i narzędzia do partycjonowania Gparted,. gparted
Używam MakeUSB również do tworzenia napędów rozruchowych USB mkusb
, ale może on uruchamiać części, które wymagają podniesionych uprawnień bez grafiki.)
xhost
i sudo -H
Istnieje obejście umożliwiające graficzne programy aplikacyjne będące własnością innych użytkowników niż zalogowany użytkownik w Wayland,
xhost +si:localuser:root
gksu
i gksudo
nie są dołączone do standardowego Ubuntu i nie działają tutaj, ale działają w Xorg.
Zamiast tego możesz użyć
sudo -H
Dobrym pomysłem jest zapobieganie graficznym programom aplikacyjnym, które są własnością innych użytkowników niż zalogowany użytkownik,
xhost -si:localuser:root
backend administratora gvfs
W Ubuntu 17.10 (gvfs> = 1.29.4) możesz użyć backendu administracyjnego gvfs. Zauważ, że potrzebujesz pełnej ścieżki,
gedit admin:///path/to/file
Teoretycznie metoda administracyjna gvfs (która korzysta z polkit) jest lepsza i bezpieczniejsza (niż xhost
i xudo -H
), niezależnie od używanego interfejsu użytkownika.
Nie uruchamiasz całej aplikacji jako root. Eskalacja uprawnień ma miejsce tylko wtedy, gdy jest to absolutnie konieczne. Zobacz poniższy link i linki z niego,
nautilus-admin
Możliwe jest również użycie nautilus-admin
do operacji na plikach z podwyższonymi uprawnieniami i użycie gedit
z podwyższonymi uprawnieniami. Jest to opisane w następującej odpowiedzi AskUbuntu,
Tymczasowy dostęp użytkownika root do pulpitu Wayland za pośrednictwem funkcji gks
Proszę unikać sudo GUI-program
. Może to spowodować nadpisanie przez system plików konfiguracyjnych zwykłego identyfikatora użytkownika root
konfiguracją oraz ustawienie własności i uprawnień w celu dopasowania root
i zablokowania zwykłego identyfikatora użytkownika. Powinieneś uruchomić aplikacje GUI sudo -H
, które zapisują pliki konfiguracyjne w root
katalogu domowym /root
. Przykład:
sudo -H gedit myfile.txt
Ale istnieje ryzyko, że zapomnisz -H
. Zamiast tego możesz na przykład utworzyć funkcjęgks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
i przechowujcie go w ~/.bashrc
pobliżu pseudonimów. Potem możesz biec
gks gedit myfile.txt
w podobny sposób jak gksudo
wcześniej.
Testowanie
Można sprawdzić, w jaki sposób sudo
, sudo -H
a gks
pracę z poniższych poleceń
sudodus@xenial32 ~ $ sudo bash -c "echo ~"
/home/sudodus
sudodus@xenial32 ~ $ sudo -H bash -c "echo ~"
/root
sudodus@xenial32 ~ $ gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
sudodus@xenial32 ~ $ gks bash -c "echo ~"
localuser:root being added to access control list
/root
localuser:root being removed from access control list
sudodus@xenial32 ~ $
i oczywiście
gks gedit myfile.txt
zgodnie z przykładem w poprzedniej sekcji.
Metoda działająca poprzez Alt-F2 i menu Gnome Shell
Zamiast dodawać prostą funkcję jednowierszową ~/.bashrc
, możesz stworzyć system, który działa również bez basha. Może być wygodny w użyciu, ale jego konfiguracja jest bardziej skomplikowana. Zauważ, że powinieneś zainstalować tylko jedną z alternatyw, ponieważ funkcja jednowierszowa zakłóci korzystanie z tego bardziej skomplikowanego systemu.
Trzy pliki
Skrypt gks
:
#!/bin/bash
xhost +si:localuser:root
if [ $# -eq 0 ]
then
xterm -T "gks console - enter command and password" \
-fa default -fs 14 -geometry 60x4 \
-e bash -c 'echo "gks lets you run command lines with GUI programs
with temporary elevated permissions in Wayland."; \
read -p "Enter command: " cmd; \
cmdfile=$(mktemp); echo "$cmd" > "$cmdfile"; \
sudo -H bash "$cmdfile"; rm "$cmdfile"'
else
xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H "$@"
fi
xhost -si:localuser:root;
Plik na pulpicie gks.desktop
:
[Desktop Entry]
Version=1.0
Categories=Application;System;
Type=Application
Name=gks
Description=Run program with temporary elevated permissions in Wayland
Comment=Run program with temporary elevated permissions in Wayland
Exec=gks %f
Icon=/usr/share/icons/gks.svg
Terminal=false
StartupNotify=false
GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland
Plik ikony gks.svg
wygląda następująco:
Możesz pobrać plik ikony lub archiwum ze wszystkimi trzema plikami z tego linku,
wiki.ubuntu.com/Wayland/gks
Skopiuj [wyodrębnione lub skopiowane i wklejone] pliki do następujących lokalizacji,
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
Wyloguj się / zaloguj lub uruchom ponownie, a na pulpicie powinna znajdować się działająca ikona. Będzie działał z okna terminala, podobnie jak w przypadku prostego rozwiązania z funkcją.
Alt F2 pudełko:
Menu Gnome Shell:
Konsola gks i gparted:
Niestandardowy skrypt i plik na pulpicie
Jeśli masz tylko kilka aplikacji GUI, które wymagają podwyższonych uprawnień, możesz tworzyć dla nich niestandardowe skrypty i pliki pulpitu i unikać wpisywania polecenia (nazwy aplikacji). Podałbyś tylko hasło, co nie jest trudniejsze w porównaniu z poprzednimi wersjami Ubuntu (i tak powinieneś wpisać hasło).
Przykład z prostym programem GUI xlogo
dostarczanym z pakietem programu x11-apps
:
Shellscript gkslogo
(uproszczony w porównaniu do gks
),
#!/bin/bash
xhost +si:localuser:root
xterm -T "gks console - enter password" -fa default -fs 14 -geometry 60x4 -e sudo -H xlogo
xhost -si:localuser:root;
Plik na pulpicie gkslogo.desktop
:
[Desktop Entry]
Version=1.0
Categories=Application;System;
Type=Application
Name=gkslogo
Description=Run program with temporary elevated permissions in Wayland
Comment=Run program with temporary elevated permissions in Wayland
Exec=gkslogo
Icon=/usr/share/icons/gks.svg
Terminal=false
StartupNotify=false
GenericName[en_US.UTF-8]=Run program with temporary elevated permissions in Wayland
Byłem leniwy i użyłem tego samego pliku ikon gks.svg
Skopiuj pliki [skopiowane i wklejone] do następujących lokalizacji,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
Konsola gks [logo] i xlogo:
gksudo
nie będzie działać w sesji Wayland , możesz przełączyć się na sesję Xorg i spróbować.