Çözümler
Wayland'da GUI uygulama programlarını yükseltilmiş (sudo -H, gksu ...) izinleriyle çalıştırmak zordur. Bu tür görevleri komut satırı araçlarıyla yapmak iyi bir fikirdir.
Ancak, bir GUI aracınız varsa, sizin için iyi çalışan ve daha yüksek izinler gerektiren geçici çözümler vardır. (Böyle iki standart araç kullanıyorum: Synaptic Paket Yöneticisi synapticve gpartedGparted bölümleme aracı . USB önyükleme sürücüleri oluşturmak için MakeUSB kullanıyorum mkusb, ancak grafikler olmadan yüksek izinlere sahip parçaları çalıştırabilir.)
xhost ve sudo -H
Wayland’da oturum açmış kullanıcıdan başka kullanıcıların sahip olduğu grafik uygulama programlarına izin vermek için bir geçici çözüm vardır.
xhost +si:localuser:root
gksuve gksudostandart Ubuntu ile birlikte verilmez ve burada çalışmıyorum, ama Xorg çalışır.
Bunun yerine kullanabilirsiniz
sudo -H
Daha sonra giriş yapan kullanıcılardan başkalarının sahip olduğu grafik uygulama programlarını önlemek iyi bir fikirdir,
xhost -si:localuser:root
gvfs admin arka uç
Ubuntu 17.10 (gvfs> = 1.29.4) 'te gvfs admin arka ucunu kullanabilirsiniz. Tam yola ihtiyacınız olduğuna dikkat edin,
gedit admin:///path/to/file
Teoride, kullandığınız UI ne olursa olsun , gvfs admin backend yöntemi (polkit kullanan) daha iyi ve daha güvenlidir ( xhostve ve xudo -H).
Tüm uygulamayı root olarak çalıştırmazsınız. Ayrıcalık yükseltme, yalnızca kesinlikle gerekli olduğunda gerçekleşir. Aşağıdaki linke ve linke bakınız,
Nautilus-admin
nautilus-adminYükseltilmiş izinlerle dosya işlemlerinde kullanmak geditve yükseltilmiş izinlerle kullanmak da mümkündür . Bu, aşağıdaki AskUbuntu cevabında açıklanmıştır,
İşlev yoluyla Wayland masaüstüne kök için geçici erişim gks
Lütfen kaçının sudo GUI-program. Sistemin, düzenli kullanıcı kimliğinizin yapılandırma dosyalarının yapılandırmasıyla üzerine yazmasına ve düzenli kullanıcı kimliğinize rootuyması rootve kilitlenmesi için sahiplik ve izinleri ayarlamasına neden olabilir . sudo -HKonfigürasyon dosyalarını rootana dizine yazan GUI uygulamalarını çalıştırmalısınız /root. Örnek:
sudo -H gedit myfile.txt
Ama unuttuğun bir risk var -H. Bunun yerine, örneğin bir işlev oluşturabilirsiniz.gks
gks () { xhost +si:localuser:root; sudo -H "$@"; xhost -si:localuser:root; }
ve ~/.bashrctakma adların yakınında saklayın . Sonra koşabilirsin
gks gedit myfile.txt
daha gksudoönce kullandığın gibi .
Test yapmak
Sen nasıl kontrol edebilirsiniz sudo, sudo -Hve gksişi aşağıdaki komutlarla
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 ~ $
ve tabi ki
gks gedit myfile.txt
önceki bölümdeki örneğe göre.
Alt-F2 ve Gnome Shell menüsü ile çalışan yöntem
Tek satırlı basit bir işlev eklemek yerine, ~/.bashrcbash olmadan da çalışan bir sistem oluşturabilirsiniz. Kullanımı uygun olabilir, ancak kurulması daha karmaşıktır. Lütfen alternatiflerden yalnızca birini kurmanız gerektiğine dikkat edin, çünkü tek satırlık işlev bu daha karmaşık sistemi kullanmaktan rahatsız olacaktır.
Üç dosya
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;
Masaüstü dosyası 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
Simge dosyası gks.svgşöyle görünür:

Bu dosyadan üç dosyayı içeren simge dosyasını veya bir tarball'ı indirebilirsiniz.
wiki.ubuntu.com/Wayland/gks
[Ayıklanmış veya kopyalanmış ve yapıştırılmış] dosyaları aşağıdaki konumlara kopyalayın,
sudo cp gks /usr/bin
sudo cp gks.desktop /usr/share/applications/
sudo cp gks.svg /usr/share/icons
Oturumu kapat / oturum aç veya yeniden başlat ve çalışan bir masaüstü simgesi olması gerekir. Fonksiyonla basit bir çözüm gibi bir terminal penceresinden çalışacak.
Alt F2 Kutu:

GNOME Shell menüsü:

gks konsolu ve gparted:

Özel komut dosyası ve masaüstü dosyası
Yalnızca yüksek sayıda izin gerektiren birkaç GUI uygulamanız varsa, onlar için özel komut dosyaları ve masaüstü dosyaları oluşturabilir ve komutu girmekten kaçınabilirsiniz (uygulama adı). Sadece Ubuntu'nun önceki sürümlerine kıyasla daha zor olmayan şifreyi girecektiniz (yine de şifreyi girmelisiniz).
xlogoProgram paketiyle birlikte verilen basit GUI programına örnek x11-apps:
Shellscript gkslogo(ile karşılaştırıldığında basitleştirilmiş 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;
Masaüstü dosyası 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
Tembeldim ve aynı simge dosyasını kullandım gks.svg
[Kopyalandı & yapıştırılan] dosyaları aşağıdaki konumlara kopyalayın,
sudo cp gkslogo /usr/bin
sudo cp gkslogo.desktop /usr/share/applications/
gks [logo] konsolu ve xlogo:

gksudoBir işe yaramaz Wayland oturumunda , belgeyi bir Xorg oturumuna geçmek ve deneyin.