Vraag Waarom niet gksu / gksudo of een grafische applicatie starten met sudo werken met Wayland?


Ik heb Ubuntu 17.10 geïnstalleerd. Nu heb ik problemen met gksu:

$ gksu -dg synaptic
No ask_pass set, using default!
xauth: /tmp/libgksu-HgUjgQ/.Xauthority
STARTUP_ID: gksu/synaptic/8760-0-alex-XPS-15-9530_TIME4974977
cmd[0]: /usr/bin/sudo
cmd[1]: -H
cmd[2]: -S
cmd[3]: -p
cmd[4]: GNOME_SUDO_PASS
cmd[5]: -u
cmd[6]: root
cmd[7]: --
cmd[8]: synaptic
buffer: -GNOME_SUDO_PASS-
brute force GNOME_SUDO_PASS ended...
Yeah, we're in...
Unable to init server: Could not connect: Connection refused
(synaptic:8767): Gtk-WARNING **: cannot open display: :1
xauth: /tmp/libgksu-HgUjgQ/.Xauthority
xauth_env: (null)
dir: /tmp/libgksu-HgUjgQ

Als ik het niet gebruik -g, het wachtwoorddialoogvenster is uitgeschakeld. Dus ziet eruit als een probleem bij het maken van een tty voor root.

Enig advies?


36
2017-10-04 13:58


oorsprong


gksudo zal niet werken in een Wayland-sessie, je kan overschakelen naar een Xorg-sessie en probeer. - pomsky
De fout zelf als een X-fout "display niet kan openen:: 1". Wayland is op deze manier ontworpen en, naar de mening van de ontwikkelaars, zou je geen grafische applicaties als root vanaf de commandoregel mogen gebruiken. Je kunt met xhost werken. - Panther
gksu -dg synapticDat zou je nooit moeten doen. - Rinzwind
Als je een van de genoemde mogelijkheden hebt geprobeerd, markeer dit antwoord dan als correct. om dit te doen, raakt u gewoon de haak naast het antwoord van uw voorkeur. - IndexOutOfBoundsException
@ N0rbert stop met het toevoegen van de 17.10 op vragen die 17.10 vermelden. Versie-tags moeten worden gebruikt als de vraag specifiek is voor die release. De meeste van deze vragen zijn over het algemeen van toepassing overal waar Wayland, GNOME Shell, enz. Beschikbaar zijn, en dat omvat verleden en toekomstige versies. - muru


antwoorden:


Merk op dat dit antwoord specifiek is voor versies van Ubuntu die Wayland gebruiken, 17.10 is de eerste release die Wayland standaard gebruikt.

Het is een functie geen bug! Het is een ontwerpkenmerk van Wayland dat u grafische toepassingen niet als root vanaf de terminal kunt starten.

De belangrijkste discussies zijn natuurlijk op de Fedora-sites. Zien Fedora-bug # 1274451 en Grafische applicaties kunnen niet als root in wayland worden uitgevoerd (bijvoorbeeld gedit, beesu, gparted, nautilus) op Ask Fedora. Maar er is ook enige discussie over de Ubuntu-sites (Ubuntu Devs onzeker over het gebruik van Wayland standaard in 17.10 - OMG! Ubuntu).

Ubuntu-bugrapport: Niet in staat om pkexec'ed applicaties op Wayland sessie te starten

Potentieel werk rond - Als u systeembestanden bewerkt met een grafische editor (zoals gedit), gebruikt u een opdrachtregelprogramma zoals nano of vim of emacs. nano is meestal gemakkelijker voor nieuwe gebruikers, vim is krachtiger en heeft meer functies, zie deze Vim-zelfstudie of vergelijkbaar.

In ieder geval, als je het echt wilt of nodig hebt voer grafische apps uit als root, stel in xhost eerst wat terugval naar Xserver dwingt.

Om machtigingen in te stellen:

xhost si:localuser:root 

Wanneer u klaar bent, om machtigingen te verwijderen

xhost -si:localuser:root 

U kunt een grafische / desktop-optie toevoegen om dit volgens de onderstaande procedure te doen dit synaptische bugrapport

pkexec'ed applicaties kunnen worden genezen met xhost +si:localuser:root geplaatst in XDG autostart als volgt (N0rbert's idee):

cat <<EOF | sudo tee /etc/xdg/autostart/xhost.desktop
[Desktop Entry]
Name=xhost
Comment=Fix graphical root applications
Exec="xhost +si:localuser:root"
Terminal=false
Type=Application
EOF

Je zou dit xhost commando aan .bashrc kunnen toevoegen, maar ik zou een paar aliassen aanraden

alias gsuon='xhost si:localuser:root'

alias gsuoff='xhost -si:localuser:root'

U kunt de aliassen een naam geven die u maar wilt.

Voor details zie:


Schakel terug naar Xorg

Als u om welke reden dan ook de voorkeur geeft aan Xorg, kunt u ervoor kiezen om bij het inloggen op Xorg uit te voeren

Zien Hoe schakel je van Wayland terug naar Xorg in Ubuntu 17.10?


46
2017-10-04 14:36



Werkt deze oplossing? met Mir ook? - Eliah Kagan
Ik weet het niet van MIR, misschien. - Panther
Of gewoon xhost +local: - chaskes
"Het is een functie geen bug!" ... zucht. Dit soort dingen is precies de reden dat ik mijn vriend en collega's niet kan overtuigen om over te schakelen op Linux. Het gebruik van VIM en Nano is geen alternatief voor GEdit. Gedit werkt als Kladblok, terwijl je de CRTL-code moet leren voor die anderen. En neem bijvoorbeeld Nano met de termen zoals "Write Out" in plaats van "Save" .... Zeer gebruikersonvriendelijk. - JHBonarius
Dit breekt ook volledig met Gparted, wat nogal belangrijk is om toegang toe te hebben. Wat ooit is gebeurd: "Probeer niet te voorkomen dat stomme mensen domme dingen doen, maar je kunt alleen voorkomen dat slimme mensen slimme dingen doen."? - Matthew Najmon


enter image description here Oplossingen

In Wayland is het vaak moeilijk om GUI-applicatieprogramma's uit te voeren met verhoogde (sudo -H, gksu ...) permissies. Het is een goed idee om dergelijke taken uit te voeren met opdrachtregelprogramma's.

Maar er zijn workarounds, als je een GUI-tool hebt, die goed werkt voor je en die verhoogde rechten nodig heeft. (Ik gebruik twee van dergelijke standaardtools: de Synaptic Package Manager, synaptic en de partitioneringstool Gparted, gparted. Ik gebruik MakeUSB om USB-opstartschijven te maken, mkusb, maar het kan ook de delen uitvoeren die verhoogde rechten nodig hebben zonder afbeeldingen.)

xhost en sudo -H

  1. Er is een oplossing om grafische toepassingsprogramma's van andere gebruikers toe te staan ​​dan de ingelogde gebruiker in Wayland,

    xhost +si:localuser:root
    
  2. gksu en gksudo zijn niet gebundeld met standaard Ubuntu en werken hier niet, maar ze werken in Xorg.

    In plaats daarvan kunt u gebruiken

    sudo -H
    
  3. Het is een goed idee om grafische toepassingsprogramma's van andere gebruikers dan de ingelogde gebruiker achteraf te voorkomen,

    xhost -si:localuser:root
    

gvfs admin-backend

In Ubuntu 17.10 (gvfs> = 1.29.4) kun je de back-up van de gvfs-admin gebruiken. Merk op dat je het volledige pad nodig hebt,

gedit admin:///path/to/file

In theorie is de back-endmethode gvfs admin (die polkit gebruikt) beter en veiliger (dan xhost en xudo -H), ongeacht de gebruikersinterface die u gebruikt.

U voert de hele applicatie niet als root uit. Privilege-escalatie gebeurt alleen wanneer dat strikt noodzakelijk is. Zie de volgende link en links ervan,

nautilus-admin

Het is ook mogelijk om te gebruiken nautilus-admin voor bestandsbewerkingen met verhoogde machtigingen en om te gebruiken gedit met verhoogde machtigingen. Dit wordt beschreven in het volgende AskUbuntu-antwoord,

Tijdelijke toegang voor root tot het Wayland-bureaublad via functie gks

Vermijd alstublieft sudo GUI-program. Hierdoor kan het systeem de configuratiebestanden voor uw gewone gebruikers-ID overschrijven rootconfiguratie en stel het eigendom en de te passen toestemmingen in root en vergrendel je gewone gebruikers-ID. U moet GUI-toepassingen uitvoeren met sudo -H, waarin de configuratiebestanden worden geschreven root's home directory /root. Voorbeeld:

sudo -H gedit myfile.txt

Maar er is een risico dat je vergeet -H. In plaats daarvan kunt u bijvoorbeeld een functie maken gks

gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }

en sla het op in uw ~/.bashrc in de buurt van de aliassen. Dan kun je rennen

gks gedit myfile.txt

op een manier vergelijkbaar met hoe je hebt gebruikt gksudo voor.

testen

U kunt controleren hoe sudo, sudo -H en gks werk met de volgende opdrachten

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 ~ $ 

en natuurlijk

gks gedit myfile.txt

volgens het voorbeeld in het vorige gedeelte.

Methode die werkt via Alt-F2 en Gnome Shell-menu

In plaats van een eenvoudige functie met één regel toe te voegen aan ~/.bashrc, je kunt een systeem maken, dat ook zonder bash werkt. Het kan handig zijn om te gebruiken, maar het is ingewikkelder om het in te stellen. Merk alstublieft op dat u slechts één van de alternatieven zou moeten installeren, omdat de one-line functie het gebruik van dit ingewikkelder systeem verstoort.

Drie bestanden

Het shellscript 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;

Het bureaubladbestand 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

Het pictogrambestand gks.svg het lijkt hierop:

enter image description here

Je kunt het pictogrambestand of een tarball downloaden met alle drie de bestanden van deze link,

wiki.ubuntu.com/Wayland/gks

Kopieer de [uitgepakte of gekopieerde & geplakte] bestanden naar de volgende locaties,

sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons

Uitloggen / inloggen of opnieuw opstarten, en er zou een werkend bureaubladpictogram moeten zijn. Het zal werken vanuit een terminalvenster zoals met de eenvoudige oplossing met de functie.

Alt F2 doos:

enter image description here

Gnome Shell-menu:

enter image description here

gks console en gparted:

enter image description here

Aangepast script en desktopbestand

Als u slechts een paar GUI-toepassingen hebt, waarvoor verhoogde machtigingen nodig zijn, kunt u aangepaste scripts en bureaubladbestanden voor hen maken en het invoeren van de opdracht (naam van de toepassing) voorkomen. Je zou alleen het wachtwoord invoeren, wat niet moeilijker is in vergelijking met de vorige versies van Ubuntu (je zou sowieso het wachtwoord moeten invoeren).

Voorbeeld met het eenvoudige GUI-programma xlogo dat komt met het programmapakket x11-apps:

Het shellscript gkslogo (vereenvoudigd in vergelijking met 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;

Het bureaubladbestand 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

Ik was lui en gebruikte hetzelfde pictogrambestand gks.svg

Kopieer de [gekopieerd & geplakt] bestanden naar de volgende locaties,

sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/

gks [logo] console en xlogo:

enter image description here


18
2017-10-04 14:51



Is de "Tijdelijke toegang voor root naar de Wayland-desktop via functiegers" een veiligere methode (bijvoorbeeld dan het toevoegen van een bestand zoals /etc/xdg/autostart/xhost.destop zoals ook gesuggereerd) omdat het eindigt met het herstellen van de oorspronkelijke omgeving? En kunnen we veilig vervangen sudo -H met gksu in de alias om insert te gebruiken in .desktop-bestanden, enz.? - Sadi
Ja, ik zou denken dat het veiliger is root-toegang tot de desktop alleen toe te staan ​​als dat nodig is. En ja, je kunt vervangen sudo -H met gksu in de functie werkt deze mogelijk beter voor uw toepassingen. - sudodus
Hoe te handelen in het geval Alt-F2 of Gnome Shell-menu? - Alex Chapiro
"Wayland is ontworpen om geen verhoogde (sudo -H, gksu ...) permissies toe te staan ​​met GUI-toepassingsprogramma's." - false. Wayland maakt roottoepassingen prima. Je kunt dit zien door te hardlopen sudo -E gedit. Er is momenteel een bug in gdm waar het de Xwayland X11 compatibiliteitsserver configureert om XAUTHORITY niet te ondersteunen, wat nodig is voor X11-applicaties die als root draaien om te werken. Native wayland-applicaties die als root worden uitgevoerd, werken prima. - psusi
@psusi, ik heb het antwoord aangepast om uitspraken over het ontwerp en de intenties van Wayland te voorkomen. - sudodus


Controleer beter of wayland echt eerst wordt uitgevoerd voordat u rootrechten toewijst

if [ $XDG_SESSION_TYPE = "wayland" ]; then
    xhost +si:localuser:root
fi

6
2017-10-07 10:52





Als je gebruikt Ubuntu 17.04 of hoger, is het aanbevolen om de gvfs admin-backend. Gewoon toevoegen beheerder:// naar de voorkant van de volledige map die je wilt openen in een app zoals de Teksteditor of de Bestanden apps.

Als u bijvoorbeeld de opstartinstellingen wilt wijzigen, opent u

admin:///etc/default/grub

Deze methode maakt gebruik van PolicyKit en werkt nog steeds met de Wayland-standaard van Ubuntu 17.10, terwijl sudo en gksu voor GUI-apps dat niet doen.


5
2017-10-23 18:45



Bedankt. Voor mij werkte dit het beste gedit (behalve een vreemd gedrag wanneer het simpelweg als gebruikt wordt gedit admin:), heel vreemd met nautilus (bijna nutteloos), en volledig mislukt synaptische. Om het even welke ideeën? - Sadi
Het gaat niet werken met synaptic. Het zou echter goed moeten werken in nautilus, maar je moet een map kiezen die niet een bestand is zoals admin:///etc/ - Jeremy Bicha
Het werkt best mee nautilus maar je zult zien wat ik bedoel ("heel vreemd", "bijna nutteloos") zelfs wanneer je een map direct opent, en begint te proberen om dit en dat te doen ;-) - Sadi
@Sadi Ik heb geen idee wat "dit en dat" is. U zou een bug kunnen indienen als deze niet goed werkt. - Jeremy Bicha


Voor applicaties die su-to-root en pkexec gebruiken, wil je deze code misschien toevoegen /etc/xdg/autostart (zien mijn reactie op het startpunt) op eigen risico:

cat <<EOF | sudo tee /etc/xdg/autostart/xhost.desktop
[Desktop Entry]
Name=xhost
Comment=Fix graphical root applications
Exec="xhost +si:localuser:root"
Terminal=false
Type=Application
EOF

Andere roottoepassingen worden ook op Wayland verbroken (zie bug 1713313 en bug 1713311 ).


Als u geen permanente oplossing wilt, kunt u de methode van @ ravery gebruiken:

typ gewoon xhost +si:localuser:root in de terminal voordat een geprivilegieerde toepassing wordt gestart


3
2017-10-22 10:45





Eigenlijk werkt de volgende code bijna:

#! /bin/bash
set -e 
if [ -z "$1" ] ; then
    echo "Application is not specified" ;  exit
fi 
if [ $XDG_SESSION_TYPE = "wayland" ]; then
    if [[ -t 1 ]]; then
       xhost +si:localuser:root
       sudo -u root "$@"
       xhost  -  
       exit 0
    fi 
fi
gksu "$@"

(Excuseer me voor de naïeve stijl van bash-codering. Ik ben een soort van newbie  met dit onderwerp). T werkt niet stabiel vanaf Alt-F2, als de laatste selectie geen terminal was; in dit geval kunnen we gewoon niet focussen op het wachtwoorddialoogvenster. Het lijkt erop dat het werkt vanuit het Gnome-menu. Anyway < 1. Het is geen 100% -oplossing. 2. Het lijkt mij dat Ubuntu-architecten denken dat het niet de bedoeling is dat ze naar enig werk in de buurt zoeken.


0
2017-10-26 02:10



Ik denk dat je het wilt "$@" (in plaats van "$1" "$2" ...). - muru
Ja natuurlijk :-) Dit zijn slechts sporen van mijn experimenten - Alex Chapiro


Als een app Wayland API ondersteunt, kunt u deze als root gebruiken sudo -EH application opdracht.

De -E switch vertelt sudo om omgevingsvariabelen (evenals WAYLAND_SOCKET en XDG_RUNTIME_DIR) te behouden die nodig zijn voor routetoepassingen. Het is altijd beter om deze optie te gebruiken dan vervelende xhost-hack voorgesteld in andere antwoorden. Met xhost kan de applicatie van onder X-wrapper lopen, wat minder veilig is dan Wayland (gedeeld klembord, keylogging, enz.). De sudo -EH-truc zal niet werken met een applicatie die niet is herschreven voor wayland, zoals bijvoorbeeld gparted, maar zou werken met gedit etc.


0
2018-05-03 19:08